最近“复习”到了二叉树,从leetcode找题做,发现相同的树
总之都是answer-coper
我就想先序迭代地dfs掉这道题,其他的答案上都有总结不赘述
下面主打我抄我自己
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool isSameTree(struct TreeNode* p, struct TreeNode* q) {
if (p == NULL && q == NULL) {
return true;
} else if (p == NULL || q == NULL) {
return false;
} else if (p->val != q->val) {
return false;
} else {
struct TreeNode*stk1[2000];
struct TreeNode*stk2[2000];
int stk_top1=0,stk_top2=0;
while((stk_top1>0&&stk_top2>0)||(p!=NULL||q!=NULL)){
while(p&&q){
if (p->val != q->val)return false;
stk1[stk_top1++]=p;
stk2[stk_top2++]=q;
p=p->left;
q=q->left;
}
if((p==NULL)^(q==NULL))return false;
p=stk1[--stk_top1]->right;
q=stk2[--stk_top2]->right;
}
return stk_top1==0&&stk_top2==0;
}
}
作者:EADGBE
链接:https://leetcode.cn/problems/same-tree/solutions/2449239/dfsqian-xu-fei-di-gui-by-eadgbe-w-boyz/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
while((stk_top1>0&&stk_top2>0)||(p!=NULL||q!=NULL)){
这一行当时没有考虑进入需要右边的条件,
其次当右孩子为NULL和value的时候要继续去压栈,所以有!NULL就得继续
ps,找到个先序后序中序dfs讲解很好的博主
dfs二叉树