您的位置:首页 > 其它

树的子结构

2016-06-21 12:35 197 查看

题目

输入两颗二叉树A,B,判断B是不是A的子结构。

解题

子结构:B完全在A中,不要求B的叶子节点是A的叶子结点

找到开始相等的点,完全比较

否则,左右子树比较

/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
this.val = val;

}

}
*/
public class Solution {
public boolean HasSubtree(TreeNode r1,TreeNode r2) {
if(r1== null && r2 == null)
return false;
if(r1==null && r2!=null)
return false;
if(r1!=null && r2==null)
return false;
if(r1.val== r2.val){
if(isSubTree(r1,r2))
return true;
}
if(HasSubtree(r1.left,r2))// 比较左子树
return true;
else
return HasSubtree(r1.right,r2);  // 比较右子树
}
// 判断以r2是否是r1的一部分,同时是一r1结点开始比较
public boolean isSubTree(TreeNode r1,TreeNode r2){
if(r1== null && r2 == null)
return true;
if(r1==null && r2!=null)
return false;
if(r1!=null && r2==null)
return true;
if(r1.val == r2.val){
return isSubTree(r1.left,r2.left) && isSubTree(r1.right,r2.right);
}
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: