1. 程式人生 > >劍指offer(17)樹的子結構

劍指offer(17)樹的子結構

ont 題目 說明 我們 itl btree -s font 可能

題目描述:

輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構)

解題代碼:

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function HasSubtree(pRoot1, pRoot2)
{
    // write code here
    var result = false;
    //定義result為false,如果pRoot1或pRoot2為空,直接返回result
    //聲明一個函數isSubtree,對pRoot1和pRoot2調用isSubtree,返回false後接著檢測pRoot1的左子樹和右子樹
if(pRoot1 != null && pRoot2 != null){ result = isSubtree(pRoot1,pRoot2); if(!result){ result = HasSubtree(pRoot1.left,pRoot2); } if(!result){ result = HasSubtree(pRoot1.right,pRoot2); } } return result; } //當root1和root2的值不相等時直接返回false,再對root1和root2的左右子樹分別遞歸調用isSubtree
//除了第一次,root和root2都不可能為空(在HasSubtree中有控制條件),後面如果root2為空的話說明root2是root1的子樹,返回true,root1為空返回false function isSubtree(root1,root2){ if(!root2){ return true; } if(!root1){ return false; } if(root1.val != root2.val){ return false; } return isSubtree(root1.left,root2.left) && isSubtree(root1.right,root2.right); }

劍指offer(17)樹的子結構