zoukankan      html  css  js  c++  java
  • 树的子结构-剑指Offer

    树的子结构

    题目描述

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

    思路

    分两步来实现

    1. 先判断Tree1里的节点有没有和Tree2的根节点相同值得节点,递归的判断,若有,侧判断第二步,否则,返回false
    2. 从这个有相同值的节点开始判断,递归的左右对应的判断子树是否相等,注意空指针的情况
    3. 注意:在编写遍历树的代码时一定要高度警惕,在每一处要访问地址的时候都要问问自己这个地址有没有可能是NULL,如果是该怎么处理。(为了确保自己代码的完整正确,写完代码后要多用几个测试用例检验自己的程序)

    代码

    /**
    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 = DoesTree1HasTree2(root1, root2);
    			}
    			if (!result) {
    				result = HasSubtree(root1.left, root2);
    			}
    			if (!result) {
    				result = HasSubtree(root1.right, root2);
    			}
    		}
    		return result;
        }
    	public boolean DoesTree1HasTree2(TreeNode root1, TreeNode root2) {
    		if (root2 == null) {
    			return true;
    		}
    		if (root1 == null) {
    			return false;
    		}
    		if (root1.val != root2.val) {
    			return false;
    		}
    		return DoesTree1HasTree2(root1.left, root2.left) && DoesTree1HasTree2(root1.right, root2.right);
    	}
    }
  • 相关阅读:
    [翻译]理解offsetWidth,clientWidth,scrollWidth以及Height
    [翻译]Chrome控制台API参考
    前端最新面试题
    前端面试题HTML+CSS
    css代码优化的12个技巧
    重构、标准、布局
    跨域的场景及跨域方式
    ajax
    那些我们该知道的数组操作
    全国最新行政区划省市区三级数据表(2018年9月),可直接用Python处理后导入数据库
  • 原文地址:https://www.cnblogs.com/rosending/p/5618102.html
Copyright © 2011-2022 走看看