树572. 另一个树的子树

Posted ocpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树572. 另一个树的子树相关的知识,希望对你有一定的参考价值。

题目:

技术图片

 

 

 

解法:

 

方法一:先序遍历

 1 class Solution {
 2     public boolean isSubtree(TreeNode s, TreeNode t) {
 3         String tree1 = preOrder(s, true);
 4         String tree2 = preOrder(t, true);
 5         return tree1.indexOf(tree2) >= 0;
 6     }
 7 
 8     private String preOrder(TreeNode node, boolean left) {
 9         if (node == null) {
10             if (left) return "lnull";
11             else return "rnull";
12         }
13 
14         return "#" + node.val + " " + preOrder(node.left, true) + " " + preOrder(node.right, false);
15     }
16 }

 

方法二:比较节点

 1 class Solution {
 2     public boolean isSubtree(TreeNode s, TreeNode t) {
 3         return traverse(s, t);
 4     }
 5 
 6     private boolean traverse(TreeNode s, TreeNode t) {
 7         return s != null && (equals(s, t) || traverse(s.left, t) || traverse(s.right, t));
 8     }
 9 
10     // 比较两棵树是否相等
11     private boolean equals(TreeNode t1, TreeNode t2) {
12         if (t1 == null && t2 == null) return true;
13         else if (t1 == null || t2 == null) return false;
14 
15         return t1.val == t2.val && equals(t1.left, t2.left) && equals(t1.right, t2.right);
16     }
17 }

 

以上是关于树572. 另一个树的子树的主要内容,如果未能解决你的问题,请参考以下文章

572. 另一个树的子树

LeetCode572另一个树的子树

LeetCode 572. 另一个树的子树

leetcode572.另一个树的子树

leetcode572.另一个树的子树

LeetCode 572. Subtree of Another Tree (是否是另一个树的子树)