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

每日算法题【二叉树】:二叉树的最大深度、翻转二叉树、平衡二叉树

(13)二叉树的最大深度
  • [104. 二叉树的最大深度 - 力扣(LeetCode)]:

  • 解题思路:

    递归思路:二叉树的最大深度等于左右子树中深度大的+1

    /*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*///二叉树的最大深度等于左右子树中深度大的+1
    int maxDepth(struct TreeNode* root) {if (root == NULL) {return 0;}//使用变量保存递归回来的结果进行比较int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;}
    

(14)翻转二叉树
  • [226. 翻转二叉树 - 力扣(LeetCode)]:
  • 解题思路:翻转每一课树的左右子树根节点
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
struct TreeNode* flipTree(struct TreeNode* root) {if (root == NULL) {return NULL;}// 交换左右子树struct TreeNode* temp = root->left;root->left = root->right;root->right = temp;// 递归翻转左右子树flipTree(root->left);flipTree(root->right);return root;
}

(15)判断一颗树是否是平衡二叉树
  • 110. 平衡二叉树 - 力扣(LeetCode)

  • 解题思路:

    要保证当前树的左右子树高度差不大于1,并且子树本身也是平衡树。

    1. maxDepth函数:递归计算二叉树的高度。
    2. isBalanced函数
      • 如果树为空,返回true
      • 计算左右子树的高度差
      • 如果高度差≤1且左右子树都是平衡的,返回true
      • 否则返回false
    /*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*///二叉树的最大深度等于左右子树中深度大的+1
    int maxDepth(struct TreeNode* root) {if (root == NULL) {return 0;}//使用变量保存递归回来的结果进行比较int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
    }//通过前序遍历二叉树的最大深度来进行判断
    bool isBalanced(struct TreeNode* root) {if(root == NULL){return true;}int leftDepth = maxDepth(root->left);int rightDepth = maxDepth(root->right);//首先要保证当前树的左右子树高度差不大于1,并且子树本身也是平衡树。if(abs(leftDepth - rightDepth)<=1 && isBalanced(root->left) && isBalanced(root->right)){return true;}return false;
    }
    
http://www.xdnf.cn/news/1398133.html

相关文章:

  • GROMACS 安装:详细教程来袭
  • 上层协议依赖TCP
  • 【系列10】端侧AI:构建与部署高效的本地化AI模型 第9章:移动端部署实战 - iOS
  • pdf转ofd之移花接木
  • 面试 八股文 经典题目 - Mysql部分(一)
  • jsqlparser(六):TablesNamesFinder 深度解析与 SQL 格式化实现
  • Java中使用正则表达式的正确打开方式
  • 在Kotlin中安全的管理资源
  • ⸢ 叁 ⸥ ⤳ 默认安全:概述与建设思路
  • Vue2之axios在脚手架中的使用以及前后端交互
  • MongoDB 聚合管道(Aggregation)高级用法:数据统计与分析
  • destoon8.0根据模块生成html地图
  • Go 语言面试指南:常见问题及答案解析
  • Excel工作技巧
  • 【自然语言处理与大模型】多机多卡分布式微调训练的有哪些方式
  • 【Python】并发编程(一)
  • 网络工程师软考选择题精讲与解题技巧
  • Ubuntu系统下交叉编译Android的X264库
  • 【Qt开发】按钮类控件(一)-> QPushButton
  • 互联网大厂面试:大模型应用开发岗位核心技术点解析
  • LeetCode54螺旋矩阵算法详解
  • MySQL數據庫開發教學(四) 後端與數據庫的交互
  • 【Docker】Docker初识
  • 医院排班|医护人员排班系统|基于springboot医护人员排班系统设计与实现(源码+数据库+文档)
  • flink中 Lookup Join和Interval Join和Regular Join使用场景与对比
  • HTML 核心元素实战:超链接、iframe 框架与 form 表单全面解析
  • Java类加载与JVM详解:从基础到双亲委托机制
  • 基于 Kubernetes 的 Ollama DeepSeek-R1 模型部署
  • Oracle 数据库性能调优:从瓶颈诊断到精准优化之道
  • Zynq开发实践(FPGA之输入、输出整合)