zoukankan      html  css  js  c++  java
  • 代码的鲁棒性:树的子结构

    输入两棵二叉树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 {
        public boolean HasSubtree(TreeNode root1,TreeNode root2) {
            if (root1 == null || root2 == null) {
                return false;
            }
            return isSubTree(root1, root2) || HasSubtree(root1.left, root2)
                    || HasSubtree(root1.right, root2);
        }
    
        public boolean isSubTree(TreeNode root1, TreeNode root2) {
            if (root2 == null)
                return true;
            if (root1 == null)
                return false;
            if (root1.val == root2.val) {
                return isSubTree(root1.left, root2.left)
                        && isSubTree(root1.right, root2.right);
            } else
                return false;    }
    }

    代码实现方式二:

    /**
    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 root1,TreeNode root2) {
            boolean result = false;
            if (root1 != null && root2 != null) {
                if (root1.val == root2.val) {
                    result = isSubTree(root1, root2);
                }
                if (!result) {
                    result = HasSubtree(root1.left, root2);
                }
                if (!result) {
                    result = HasSubtree(root1.right, root2);
                }
            }
            return result;
        }
    
        public boolean isSubTree(TreeNode root1, TreeNode root2) {
            if (root1 == null && root2 != null)
                return false;
            if (root2 == null) {
                return true;
            }
            if (root1.val != root2.val) {
                return false;
            }
            return isSubTree(root1.left, root2.left)
                    && isSubTree(root1.right, root2.right);
        }
    }
  • 相关阅读:
    C++ const
    facebook hacker cup 2013资格赛第二题
    最大全1子矩阵
    java HashMap的keyset方法
    树状数组
    Java entry
    一个数学证明:1(1x1)(1x2)...(1xn)<=x1+x2+...+xn, xi在[0,1]
    传教士野蛮人过河问题python
    在cmd中为命令设置别名以及启动cmd时自动执行bat
    合取Λ,析取V,容易记混吗?
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5813877.html
Copyright © 2011-2022 走看看