输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

来源:互联网 发布:深圳淘宝代运营诈骗 编辑:程序博客网 时间:2024/04/29 12:31

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

思路:递归,注意对空指针的判断很重要。


/**public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/public class Solution {    private boolean Doroot1hasroot2(TreeNode root1,TreeNode root2){        if(root2==null){            return true;        }else if(root1==null){            return false;        }               if(root1.val!=root2.val)           return false;                return Doroot1hasroot2(root1.left,root2.left) && Doroot1hasroot2(root1.right,root2.right);           }        public boolean HasSubtree(TreeNode root1,TreeNode root2) {        boolean result=false;        if(root1!=null && root2!=null){            if(root1.val==root2.val){                result=Doroot1hasroot2(root1,root2);            }                        if(!result){                result=HasSubtree(root1.left,root2);            }            if(!result){                result=HasSubtree(root1.right,root2);            }        }        return result;    }}


0 0
原创粉丝点击