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判断树二是否是树一的子树

    联想

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

  • 相关阅读:
    .gitignore语法
    每日阅读
    css摘要
    ubuntu安装qq、微信
    django中views中方法的request参数
    js html标签select 中option 删除除了第一行外的其他行
    js 新增标签、标签属性
    python中None与0、Null、false区别
    python class中__init__函数、self
    for foreach循环
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5447563.html
Copyright © 2011-2022 走看看