樹的子結構
題目描述
輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構)
題目連結: 樹的子結構
程式碼
/**
* 標題:樹的子結構
* 題目描述
* 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構)
* 題目連結:
* https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&&tqId=11170&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
*/
public class Jz17 {
public static void main(String[] args) {
TreeNode root1 = new TreeNode(2);
TreeNode root2 = new TreeNode(2);
Jz17 jz17 = new Jz17();
System.out.println(jz17.hasSubtree(root1, root2));
}
public boolean hasSubtree(TreeNode root1, TreeNode root2) {
if (root1 == null || root2 == null) {
return false;
}
return isSubtreeWithRoot(root1, root2) || hasSubtree(root1.left, root2) || hasSubtree(root1.right, root2);
}
/**
* 遞迴法
*
* @param root1
* @param root2
* @return
*/
private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) {
if (root2 == null) {
return true;
}
if (root1 == null) {
return false;
}
if (root1.val != root2.val) {
return false;
}
return isSubtreeWithRoot(root1.left, root2.left) && isSubtreeWithRoot(root1.right, root2.right);
}
}
【每日寄語】 總之歲月漫長,然而值得等待。