Boundary of Binary Tree

2017-06-05  本文已影响0人  yanyuchen

解题报告:

就是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);

}

}

上一篇 下一篇

猜你喜欢

热点阅读