题解 | #判断二叉树是否相等#

判断二叉树是否相等

http://www.nowcoder.com/practice/9a9e74b71f944efab9992925f7f9a65e

2. 判断二叉树是否相等

解题思路:用栈(stack)模拟实现

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 */

class Solution {
public:
    /**
     * 
     * @param p TreeNode类 
     * @param q TreeNode类 
     * @return bool布尔型
     */
    bool isSameTree(TreeNode* p, TreeNode* q) {
        // write code here
        if (p == nullptr || q == nullptr)
        {
            return p == q;
        }
        stack<TreeNode*> st1, st2;
        st1.push(p);
        st2.push(q);
        while (!st1.empty() && !st2.empty())
        {
            TreeNode* a = st1.top();
            TreeNode* b = st2.top();
            st1.pop();
            st2.pop();
            if (a->val != b->val)
            {
                return false;
            }
            if (a->left && b->left)
            {
                st1.push(a->left);
                st2.push(b->left);
            }
            else if (a->left || b->left)
            {
                return false;
            }
            if (b->right && b->right)
            {
                st1.push(a->right);
                st2.push(b->right);
            }
            else if (b->right || b->right)
            {
                return false;
            }
        }
        if (st1.empty() && st2.empty())
        {
            return true;
        }
        else
        {
            return true;
        }
        
    }
};
全部评论

相关推荐

02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务