题解 | #对称的二叉树#

对称的二叉树

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
#include <cstddef>
#include <stack>
class Solution {
public:
    bool isSymmetrical(TreeNode* pRoot) {
        //同时遍历左右两颗二叉树(如果左右两颗二叉树都不为空树),判断其是否相等
        if(pRoot==nullptr)
            return true;
        TreeNode* bt2;
        TreeNode* bt1;

        stack<TreeNode*> s1;
        stack<TreeNode*> s2;

        bt2=pRoot->right;
        bt1=pRoot->left;
		
	  	//先排除有子树为空树的情况
        if(bt1==nullptr&&bt2!=nullptr)
            return false;
        if(bt2==nullptr&&bt1!=nullptr)
            return false;

		//遍历左子树,顺便对称遍历右子树
        while(!s1.emptysunbit1!=nullptr)
        {
            while(bt1!=nullptr)
            {
			  //判断遍历到的结点是否相等
                if(bt2==nullptr||bt1->val!=bt2->val)
                    return false;
                s1.push(bt1);
                s2.push(bt2);

                bt1=bt1->left;
                bt2=bt2->right;
            }

		  //注意,循环出来的那一次也要判断是否相等
            if(bt2!=nullptr)
                return false;

            if(!s1.empty())
            {
                bt1=s1.top();
                bt2=s2.top();
                s1.pop();
                s2.pop();
                bt1=bt1->right;
                bt2=bt2->left;
            }
        }
        return true;

    }
   

};

全部评论

相关推荐

02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
01-14 19:01
吉首大学 Java
黑皮白袜臭脚体育生:加个项目吧,一般需要两个项目一业务一轮子呢,简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务