Boundary of Binary Tree

解题报告:

就是traversal  all nodes。

/** * Definition for a binary tree node. * public class TreeNode { *    int val; *    TreeNode left; *    TreeNode right; *    TreeNode(int x) { val = x; } * } */

public class Solution {   

   public Listresult = new ArrayList<>();    

public ListboundaryOfBinaryTree(TreeNode root) {

if(root != null &&(root.left == null && root.right == null)) {

result.add(root.val);

return result;

}

if(root == null) return result;

if(root == null && (root.left == null && root.right == null)) return result;

result.add(root.val);

if(root.left!=null){

leftBoundary(root.left);

}

leaves(root);

if(root.right != null){

rightBoundary(root.right);

}

return result;

}

private void leftBoundary(TreeNode root){

if(root.left == null && root.right == null) return; // make is as leaves;

result.add(root.val);

if(root.left!=null){

leftBoundary(root.left);

}

if(root.left == null &&root.right != null){

leftBoundary(root.right);

}

}

private void leaves(TreeNode root){

if(root != null && root.left == null && root.right == null){

result.add(root.val);

}

if(root.left != null){

leaves(root.left);

}

if(root.right != null){

leaves(root.right);

}

return;

}

private void rightBoundary(TreeNode root){

if(root.left == null && root.right == null) return;

if(root.right != null){

rightBoundary(root.right);

}

if(root.right == null && root.left != null){

rightBoundary(root.left);

}

result.add(root.val);

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容