美文网首页
Boundary of Binary Tree

Boundary of Binary Tree

作者: yanyuchen | 来源:发表于2017-06-05 07:09 被阅读0次

解题报告:

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

}

}

相关文章

网友评论

      本文标题:Boundary of Binary Tree

      本文链接:https://www.haomeiwen.com/subject/vstifxtx.html