首页 > 其他 > 详细

【剑指offer】十一。树的子结构

时间:2015-09-01 22:40:43      阅读:325      评论:0      收藏:0      [点我收藏+]

题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
分析:两棵树A 和B,判断B是不是A的子树,分为三种情况,一,A的根和B的根相同,则继续比较A的左子树与B的左子树,A的右子树与B的右子树。二,若A的根和B的根不同,这比较B是不是在A的左子树中,三,比较B是不是在A的右子树中。代码如下:
 1 /**
 2 public class TreeNode {
 3     int val = 0;
 4     TreeNode left = null;
 5     TreeNode right = null;
 6  
 7     public TreeNode(int val) {
 8         this.val = val;
 9  
10     }
11  
12 }
13 */
14 public class Solution {
15    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
16      boolean res = false ;
17      if(root1!=null&&root2!=null){
18          if(root1.val==root2.val){
19              res = doesHas(root1,root2);
20          }
21          if(!res){
22              res = HasSubtree(root1.left,root2) ;
23          }
24          if(!res){
25              res = HasSubtree(root1.right,root2) ;
26          }
27      }
28      return res ;
29     }
30     private boolean doesHas(TreeNode root1, TreeNode root2) {
31     if(root2==null){
32         return true ;
33     }
34     if(root1==null){
35         return false ;
36     }
37     if(root1.val!=root2.val){
38         return false ;
39     }
40       
41     return doesHas(root1.left,root2.left)&&doesHas(root1.right,root2.right);
42 }
43 }

 

【剑指offer】十一。树的子结构

原文:http://www.cnblogs.com/huntertoung/p/4777251.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!