&LeetCode100& 相同的树

题目

给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例 1:

输入: 1 1
/ \ /
2 3 2 3

    [1,2,3],   [1,2,3]

输出: true

示例 2:

输入: 1 1
/
2 2

    [1,2],     [1,null,2]

输出: false

示例 3:

输入: 1 1
/ \ /
2 1 1 2

    [1,2,1],   [1,1,2]

输出: false

来源:力扣(LeetCode

思路

使用先序的迭代写法,同时遍历两个树,然后逐个节点进行比较。

C++代码

class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) 
    {
        stack<TreeNode*> st;
        st.push(p);
        st.push(q);
        while (!st.empty())
        {
            p = st.top();
            st.pop();
            q = st.top();
            st.pop();
            if (!p && !q)
            {
                continue;
            }
            if ((p && !q) || (!p && q) || p -> val != q -> val)
            {
                return false;
            }
            st.push(p -> left);
            st.push(q -> left);
            st.push(p -> right);
            st.push(q -> right);
        }
        return true;
    }
};
发布了51 篇原创文章 · 获赞 20 · 访问量 2106

猜你喜欢

转载自blog.csdn.net/weixin_40482465/article/details/104427660
今日推荐