LeetCode算法题目:Symmetric Tree

    xiaoxiao2021-04-16  34

    题目:

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

    For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1 / \ 2 2 / \ / \ 3 4 4 3 But the following [1,2,2,null,3,null,3] is not: 1 / \ 2 2 \ \ 3 3


    分析:

    递归,保存左右两个节点,然后判断leftNode->left和rightNode->right,以及leftNode->right和rightNode->left。如此不断递归

    代码:

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: bool isSymmetric(TreeNode *root) { if(!root) return true; return compRoot(root -> left, root -> right); } private: bool compRoot(TreeNode* lroot, TreeNode* rroot){ if(!lroot) return (NULL == rroot); if(NULL == rroot) return false; if(lroot -> val != rroot -> val) return false; return (compRoot(lroot -> left, rroot -> right) && compRoot(lroot -> right, rroot -> left)); } };
    转载请注明原文地址: https://ju.6miu.com/read-672966.html

    最新回复(0)