zoukankan      html  css  js  c++  java
  • 输入两棵二叉树A和B,判断B是不是A的子结构。

    public class Solution {
        private class TreeNode {
            int val = 0;
            TreeNode left = null;
            TreeNode right = null;
    
            public TreeNode(int val) {
                this.val = val;
    
            }
    
        }
        //HasSubtree主要是判断树root1中是否含有root2节点
           public boolean HasSubtree(TreeNode root1,TreeNode root2) {
                if(root2==null) return false;
                if(root1==null && root2!=null) return false;        
                boolean flag = false ;
                if(root1.val==root2.val){
                    flag = isSubTree(root1,root2);
                }
                return flag || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2) ;
            }
          
            private boolean isSubTree(TreeNode root1, TreeNode root2) {
                if(root2==null) return true;
                if(root1==null && root2!=null) return false;        
                if(root1.val==root2.val){
                    return isSubTree(root1.left, root2.left) && isSubTree(root1.right, root2.right);
                }
                return false;
            }
        }

    1 先采用遍历找出树一中是否含有树二的头结点

    2 如果不含有,返回false,如果含有使用isSubTree判断树二是否是树一的子树

    联想

    不仅对于二叉树,对于任何非线性的数据结构中均可以采用该方法 例如图结构

  • 相关阅读:
    [NOIP2013]华容道
    [随笔]冲NOIP一等奖。。
    [NOIP2015]联合权值
    [随笔]我回来啦!
    [考试]20151105
    [知识点]最近公共祖先LCA
    [BZOJ3751/NOIP2014]解方程
    [旧版][知识点]字符串Hash
    NOIP2016题解
    NOIP2016游记
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5447563.html
Copyright © 2011-2022 走看看