在樹的遍歷中,時刻警惕每一處需要訪問的有沒有可能是null,如果null怎麼處理
判斷指標是不是null既能避免訪問空指標而造成程式崩潰,同時也經常能設定遞迴的退出條件
接著先審題
給定兩個非空二叉樹 s 和 t,檢驗s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s也可以看做它自身的一棵子樹。
示例 1:
給定的樹 s:
3
/ \4 5
/ \1 2
給定的樹 t:
4
/ \1 2
返回true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。
示例 2:
給定的樹 s:
3
/ \4 5
/ \1 2
/0
給定的樹 t:
4
/ \1 2
返回false。
解題思路:遞迴唄!!!
第一步:先在樹s中查詢和樹t根節點相同的節點,查詢遞迴!!!
第二步:判斷兩個節點的左右子樹是否完全相同,遞迴!!!
講不多說,上**!!!
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
bool hasrootnode(treenode* s, treenode* t)
if(!result)
result = hasrootnode(s->left, t);
if(!result)
result = hasrootnode(s->right, t);
}return result;
}bool issametree(treenode* s, treenode* t)
else if(s->val != t->val)
else
result = issametree(s->left, t->left) && issametree(s->right, t->right);
}return result;
}};
突然想到,如果只是判斷樹t是否在樹s中出現,那麼需要修改**的哪些部分呢??? Leetcode 572 另乙個樹的子樹
題目描述 給定兩個非空二叉樹s和t,檢驗s中是否包含和t具有相同結構和節點值的子樹。s的乙個子樹包括s的乙個節點和這個節點的所有子孫。s也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2給定的樹 t 4 1 2返回true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。示例...
LeetCode 572 另乙個樹的子樹
給定兩個非空二叉樹s和t,檢驗s中是否包含和t具有相同結構和節點值的子樹。s的乙個子樹包括s的乙個節點和這個節點的所有子孫。s也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2給定的樹 t 4 1 2返回true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。示例 2 給定...
LeetCode 572 另乙個樹的子樹
題目描述 給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的乙個子樹包括 s 的乙個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。示例 1 給定的樹 s 3 4 5 1 2 給定的樹 t 4 1 2 返回 true,因為 t 與 s 的乙個子樹...