题解 | #对称的二叉树#

对称的二叉树

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

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pRoot TreeNode类 
     * @return bool布尔型
     */

    bool recursive(TreeNode* root1, TreeNode* root2){
        if (root1==NULL && root2==NULL) {
            return true;
        }
        if ((root1==NULL && root2!=NULL) || (root1!=NULL && root2==NULL) || (root1->val != root2->val)) {
            return false;
        }
        return recursive(root1->left, root2->right) && recursive(root1->right, root2->left);
    }
    
    bool isSymmetrical(TreeNode* pRoot) {
        // write code here
        return recursive(pRoot, pRoot);
    }
};

判断二叉树是否完全对称

方法汇总:

1.左根右遍历二叉树,保存答案;右根左遍历二叉树,保存答案;对比答案

2.递归二叉树左子节点与右子节点,判断两个节点的有无,数值是否相等,不等返回false,都为NULL说明至此没有不等,返回true。左侧子树比完,同时当前节点还需要对比右侧子树与另一个节点的左侧子树

全部评论

相关推荐

如题,字节跳动怎么才能看到自己的面评,找hr说看不到
SoulStar:自己应该看不到,这个是字节比较保密的信息,之前有mentor加我,说他能看到,但是不能给我说,给我说了他可能就要被辞退了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务