Symmetric Binary Tree

Symmetric Binary Tree.png

解題思路 :

另外寫一個 function 一次放入兩個點來檢查 ( left and right child ) 裡面除了檢查兩個點的數值是否相同以外 另外 recursive 跑 (左子-> 左子, 右子->右子) 以及 (左子->右子, 右子->左子) 的組合是否都滿足相同的條件 都成立則回傳 true 否則判斷為 false

C++ code :

<pre><code>
/**

  • Definition of TreeNode:
  • class TreeNode {
  • public:
  • int val;
    
  • TreeNode *left, *right;
    
  • TreeNode(int val) {
    
  •     this->val = val;
    
  •     this->left = this->right = NULL;
    
  • }
    
  • }
    */

class Solution {

public:
/**
* @param root, the root of binary tree.
* @return true if it is a mirror of itself, or false.
*/

bool help(TreeNode *left, TreeNode *right)
{
    if(left == nullptr && right == nullptr) return true;
    if(left == nullptr || right == nullptr) return false;
    if(left->val != right->val) return false;
    return help(left->left, right->right) && help(left->right, right->left);
}

bool isSymmetric(TreeNode* root) {
    // Write your code here
    if(root == nullptr) return true;
    return help(root->left, root->right);
}

};

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容