leetcode100相同的树,C语言时间击败百分之百

最近“复习”到了二叉树,从leetcode找题做,发现相同的树
leetcode100相同的树,C语言时间击败百分之百_第1张图片
总之都是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二叉树

你可能感兴趣的:(c语言,开发语言)