很簡單的二叉樹遍歷問題,遞歸定義:兩顆樹相等=根相等+左子樹相等+右子樹相等。特殊處理根爲空的情況,很容易寫出遞歸的實現。
非遞歸的話深度遍歷使用棧,層次遍歷使用隊列。
/**
*Definition for a binary tree node.
*struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
*};
*/
class Solution {
public:
boolisSameTree(TreeNode* p, TreeNode* q) {
if(!p&&!q)
return1;
elseif (p&&q)
{
if(p->val != q->val)
return0;
else
returnisSameTree(p->left, q->left) && isSameTree(p->right,q->right);
}
else
return0;
}
};