当前位置: 首页 > news >正文

leetCode 100. 相同的树 和 leetCode 101. 对称二叉树 和 110. 平衡二叉树 和 199. 二叉树的右视图

1.leetCode 100. 相同的树

C++代码:

class Solution {
public:
    bool isSameTree(TreeNode* p, TreeNode* q) {
        if(p == nullptr || q == nullptr) return p==q;
        return p->val == q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
    }
};

Python代码: 

class Solution:
    def isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool:
        if p is None or q is None:
            return p is q
        return p.val == q.val and self.isSameTree(p.left,q.left) and self.isSameTree(p.right,q.right)

2.leetCode 101. 对称二叉树
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

C++代码: 

class Solution {
public:
    bool isSameTree(TreeNode* p,TreeNode* q) {
        if(p == nullptr || q == nullptr) return p==q;
        return p->val == q->val && isSameTree(p->left,q->right) && isSameTree(p->right,q->left);
    }
    bool isSymmetric(TreeNode* root) {
        if(root==nullptr) return true;
        TreeNode* p = root->left;
        TreeNode* q = root->right;
        return isSameTree(p,q);
    }
};

 Python代码: 

class Solution:
    def isSameTree(self,p:Optional[TreeNode],q:Optional[TreeNode]) -> bool:
        if p is None or q is None:
            return p is q
        return p.val == q.val and self.isSameTree(p.left,q.right) and self.isSameTree(p.right,q.left)

    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        return self.isSameTree(root.left,root.right)

3.leetCode 110.平衡二叉树
https://leetcode.cn/problems/balanced-binary-tree/description/

C++代码:

class Solution {
public:
    int getHeight(TreeNode* root) {
        if(root==nullptr) return 0;
        int LH = getHeight(root->left);
        if(LH == -1) return -1;
        int RH = getHeight(root->right);
        if(RH == -1 or abs(RH-LH) > 1) return -1;
        return max(LH,RH)+1;
    }
    bool isBalanced(TreeNode* root) {
        return getHeight(root)!=-1;
    }
};

Python代码:

class Solution:
    def isBalanced(self, root: Optional[TreeNode]) -> bool:
        def get_height(node):
            if node is None: 
                return 0
            LH = get_height(node.left)
            if LH == -1:
                return -1
            RH = get_height(node.right)
            if RH == -1 or abs(RH-LH) > 1:
                return -1
            return max(LH,RH)+1
        return get_height(root)!=-1

4.leetCode 199. 二叉树的右视图
https://leetcode.cn/problems/binary-tree-right-side-view/description/

C++代码: 

class Solution {
public:
    vector<int> ans;
    void dfs(TreeNode* node,int depth) {
        if(node==nullptr) return;
        if(depth == ans.size()) ans.push_back(node->val);
        dfs(node->right,depth+1);
        dfs(node->left,depth+1);
    }
    vector<int> rightSideView(TreeNode* root) {
        dfs(root,0);
        return ans;
    }
};

Python代码: 

class Solution:
    def rightSideView(self, root: Optional[TreeNode]) -> List[int]:
        ans = []
        def f(node,depth):
            if node is None:
                return 
            if depth == len(ans):
                ans.append(node.val)
            f(node.right,depth+1)
            f(node.left,depth+1)
        f(root,0)
        return ans

参考和推荐文章、视频:

如何灵活运用递归?【基础算法精讲 10】_哔哩哔哩_bilibili

100. 相同的树 https://leetcode.cn/problems/same-tree/solutions/2015056/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-empk/

101. 对称二叉树 https://leetcode.cn/problems/symmetric-tree/solutions/2015063/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-6dq5/

110. 平衡二叉树 https://leetcode.cn/problems/balanced-binary-tree/solutions/2015068/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-c3wj/

199. 二叉树的右视图 https://leetcode.cn/problems/binary-tree-right-side-view/solutions/2015061/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-r1nc/ 

相关文章:

  • 额,收到阿里云给的赔偿了!
  • 模拟退火算法应用——求解TSP问题
  • 【Python基础】协程(迭代器、生成器、协程、gevent介绍)
  • EASYEXCEL(一)
  • 有一种浪漫,叫接触Linux
  • 面试:ShardingSphere问题
  • 服务器数据恢复—服务器重装系统导致逻辑卷发生改变的数据恢复案例
  • 笔记二十、使用路由Params进行传递参数
  • JAVA文件IO, File类, 字符流,字节流
  • vue+uniapp校园寻物失物招领平台 微信小程序1f6z5
  • 振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(8)
  • nodejs669在线图书借阅管理系统vue前端
  • Matlab进阶绘图第34期—双三角热图
  • 机器学习的复习笔记2-回归
  • springBoot设置多数据源
  • css实现水波纹效果
  • 2024年天津艺术职业学院专升本报名工作的通知
  • python读取PDF文件中的指定页码的范围并存储到指定的文件名
  • Java中的Integer.bitCount浅析
  • 初识JVM(简单易懂),解开JVM神秘的面纱
  • 教育部、国家发改委联合启动实施教师教育能力提升工程
  • 深入贯彻中央八项规定精神学习教育中央第七指导组指导督导中国船舶集团见面会召开
  • 联想发布超级智能体矩阵,杨元庆:美国关税影响反映在产品定价上,未来不确定性很大
  • 当年的你,现在在哪里?——新民晚报杯40周年寻人启事
  • 公积金利率降至历史低位,百万房贷30年省5万
  • 李云泽:对受关税影响较大、经营暂时困难的市场主体,一企一策提供精准服务