package tree;
public class FoldableBinaryTrees {
/**
* Consider the below trees:
(a) and (b) can be folded.
(c) and (d) cannot be folded.
(a)
10
/ \
7 15
\ /
9 11
(b)
10
/ \
7 15
/ \
9 11
(c)
10
/ \
7 15
/ /
5 11
(d)
10
/ \
7 15
/ \ /
9 10 12
* 判断二叉树是否是可折叠的
* @param args
*/
public static boolean isfoldable(TreeNode root){
if(root==null) return false;
if(root.left==null&&root.right==null) return true;
return isfoldablecore(root.left,root.right);
}
private static boolean isfoldablecore(TreeNode left, TreeNode right) {
if((left==null&&right==null)) return true;
if((left==null&&right!=null)||(right==null&&left!=null)) return false;
return isfoldablecore(left.left, right.right)&&isfoldablecore(left.right, right.left);
}
public static void main(String[] args) {
TreeNode root = new TreeNode(10);
root.left = new TreeNode(7);
root.right = new TreeNode(15);
root.left.left = new TreeNode(9);
root.right.right = new TreeNode(11);
System.out.println(isfoldable(root));
}
}
Foldable Binary Trees
最新推荐文章于 2020-06-07 14:05:17 发布