剑指offer第十七题。
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
解题思路
针对树的结构,肯定是要用递归了,本题我觉得还是比较难的,需要注意很多东西,但是理解上比较轻松,直接看代码,理解了就好了。
我的答案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean res = false; if(root1 != null && root2 != null){ if(root1.val == root2.val){ res = doTree1ContainsTree2(root1,root2); } if(!res){ res = HasSubtree(root1.left,root2); } if(!res){ res = HasSubtree(root1.right,root2); } } return res; } private boolean doTree1ContainsTree2(TreeNode root1,TreeNode root2){ if(root2 == null){ return true; } if(root1 == null){ return false; } if(root1.val != root2.val){ return false; } return doTree1ContainsTree2(root1.left,root2.left) && doTree1ContainsTree2(root1.right,root2.right); } }
|