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

LeetCode hot 力扣热题100 翻转二叉树

运行步骤解析:invertTree 函数

该函数的目的是通过递归反转二叉树的每一个节点,使得每个节点的左子树和右子树交换。

代码解释:

1. 函数定义:

TreeNode* invertTree(TreeNode* root)

这是一个递归函数,它接受一个二叉树的根节点 root,并返回反转后的二叉树的根节点。

2. 递归终止条件:

if (root)

如果 root 是 nullptr(表示空树或叶子节点),则不做任何操作,直接返回 nullptr。

3. 交换左右子树:

swap(root->left, root->right);

对于每个节点,交换其左子树和右子树。

4. 递归调用:

invertTree(root->left);

invertTree(root->right);

递归地反转左子树和右子树。

5. 返回根节点:

return root;

返回反转后的树的根节点。

运行步骤示例:

假设原始二叉树如下:

        1

       / \

      2   3

     / \

    4   5

我们将通过递归反转这棵树。

步骤 1: 初始调用

invertTree(root)  // root = 1

• 当前节点为 1。

• 交换左子树(节点 2)和右子树(节点 3):

      1

     / \

    3   2

   / \

  5   4

步骤 2: 递归调用左子树

invertTree(root->left)  // root = 3

• 当前节点为 3。

• 节点 3 无左子树和右子树,因此无需交换,直接返回。

步骤 3: 递归调用右子树

invertTree(root->right)  // root = 2

• 当前节点为 2。

• 交换左子树(节点 4)和右子树(节点 5):

      2

     / \

    5   4

步骤 4: 递归调用左子树

invertTree(root->left)  // root = 5

• 节点 5 无左子树和右子树,因此无需交换,直接返回。

步骤 5: 递归调用右子树

invertTree(root->right)  // root = 4

• 节点 4 无左子树和右子树,因此无需交换,直接返回。

最终结果:

经过上述递归过程,最终的反转后的树结构为:

        1

       / \

      3   2

     / \

    5   4

总结:

• 每次递归交换当前节点的左右子树。

• 递归继续深入到每个子树,直到到达叶子节点(没有子树的节点)。

• 每次交换后,最终返回的是反转后的根节点。


http://www.kler.cn/a/513476.html

相关文章:

  • Java-数据结构-二叉树习题(2)
  • 总结5..
  • 麒麟系统中删除权限不够的文件方法
  • k8s集群换IP
  • 力扣11-最后一个单词的长度
  • iOS中的设计模式(三)- 工厂方法
  • 最新百应abogus纯算还原流程分析
  • WPF2-1在xaml为对象的属性赋值.md
  • DOL-288 多功能电子计时器说明书
  • (10)深入浅出智能合约OpenZeppelin开源框架
  • Linux内核编程(二十一)USB驱动开发-键盘驱动
  • es 3期 第25节-运用Rollup减少数据存储
  • VINS-Mono源码阅读(一)程序简介、编译调试、配置文件
  • Unity自学之旅04
  • 缓存系统(redis)测试体系
  • 智慧脚下生根,智能井盖监测终端引领城市安全新革命
  • Mybatis 进阶 / Mybatis—Puls (详细)
  • 升级《在线写python》小程序的分享功能。昨天忘了...
  • Keil5 IDE使用笔记
  • C#调用c++dll的两种方法(静态方法和动态方法)
  • 大华相机DH-IPC-HFW3237M支持的ONVIF协议
  • Apache SeaTunnel 2.3.9 正式发布:多项新特性与优化全面提升数据集成能力
  • 【Python项目】小区监控图像拼接系统
  • Spring 6 第5章——面向切面:AOP
  • Spring Boot框架下的上海特产销售商城网站开发之旅
  • Java复习第四天