C语言进阶练习二叉树的递归遍历

yizhihongxing

C语言进阶练习二叉树的递归遍历的完整攻略如下:

一、前序遍历

前序遍历指的是先遍历根节点,再遍历左子树,最后遍历右子树。递归实现前序遍历的代码如下:

void preorderTraversal(TreeNode* root) {
    if(root == NULL) return;
    printf("%d ", root->val); // 先输出根节点的值
    preorderTraversal(root->left); // 递归遍历左子树
    preorderTraversal(root->right); // 递归遍历右子树
}

例如,对于如下的二叉树,其前序遍历结果应该为:1 2 4 5 3 6 7

     1
   /   \
  2     3
 / \   / \
4   5 6   7

二、中序遍历

中序遍历指的是先遍历左子树,再遍历根节点,最后遍历右子树。递归实现中序遍历的代码如下:

void inorderTraversal(TreeNode* root) {
    if(root == NULL) return;
    inorderTraversal(root->left); // 递归遍历左子树
    printf("%d ", root->val); // 输出根节点的值
    inorderTraversal(root->right); // 递归遍历右子树
}

例如,对于如下的二叉树,其中序遍历结果应该为:4 2 5 1 6 3 7

     1
   /   \
  2     3
 / \   / \
4   5 6   7

三、后序遍历

后序遍历指的是先遍历左子树,再遍历右子树,最后遍历根节点。递归实现后序遍历的代码如下:

void postorderTraversal(TreeNode* root) {
    if(root == NULL) return;
    postorderTraversal(root->left); // 递归遍历左子树
    postorderTraversal(root->right); // 递归遍历右子树
    printf("%d ", root->val); // 输出根节点的值
}

例如,对于如下的二叉树,其后序遍历结果应该为:4 5 2 6 7 3 1

     1
   /   \
  2     3
 / \   / \
4   5 6   7

以上就是二叉树的递归遍历的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言进阶练习二叉树的递归遍历 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • cmd怎么修改文件扩展名? cmd显示修改文件扩展名的教程

    当使用命令提示符(cmd)修改文件扩展名时,可以使用ren命令来完成。下面是一个详细的攻略,包含了两个示例说明: 首先,打开命令提示符(cmd)窗口。可以通过按下Win + R键,然后输入\”cmd\”并按下Enter键来打开。 在命令提示符窗口中,使用cd命令导航到包含要修改扩展名的文件所在的目录。例如,如果文件位于D盘的Documents文件夹中,可以输…

    other 2023年8月5日
    00
  • 微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析

    微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析 一、前言 在微信小程序开发中,列表渲染功能是必不可少的功能之一。而列表下拉刷新及上拉加载是列表渲染的常见需求,本文将从实现方法分析角度对列表下拉刷新及上拉加载这一功能进行详细讲解。 二、实现思路 1. 下拉刷新 下拉刷新的实现思路如下: 在需要下拉刷新的页面添加一个scroll-view元素,并设…

    other 2023年6月25日
    00
  • php鸟哥:我也曾经是“不适合”编程的人

    php鸟哥:我也曾经是“不适合”编程的人 大家好,我是一名PHP程序员,也是一名《PHP核心》,《PHP扩展开发及内核应用》等著名技术书籍的作者,大家都喜欢叫我“PHP鸟哥”。 关于我和编程之间的故事,也许会让很多人惊讶,因为我曾经也是一名“不适合编程”的人。 当我还是一个初学者的时候,我并不觉得自己适合编程。我学习编程的过程中,遇到了很多挫折。每次遇到一个…

    其他 2023年3月29日
    00
  • php获取访问者IP地址汇总

    PHP获取访问者IP地址汇总攻略 在PHP中,获取访问者的IP地址可以通过多种方式实现。下面是一个完整的攻略,包含了两个示例说明。 方法一:使用$_SERVER全局变量 PHP中的$_SERVER全局变量包含了与服务器相关的信息,其中包括访问者的IP地址。通过访问$_SERVER[‘REMOTE_ADDR’]可以获取到访问者的IP地址。 示例代码: $ip …

    other 2023年7月30日
    00
  • Android编程实现应用程序开机自启动的方法

    首先我们要明确一下,Android系统本身并没有提供开机自启动的接口,但可以通过以下方法实现: 使用BroadcastReceiver接收系统广播,启动应用程序 在Android系统中有一些系统级别的广播,例如系统启动完成的广播、应用程序安装完成的广播等,我们可以通过监听这些广播,来自动启动我们的应用程序。 具体实现步骤如下: 创建一个BroadcastRe…

    other 2023年6月25日
    00
  • C++深入刨析类与对象的使用

    C++深入刨析类与对象的使用 什么是类与对象 在 C++ 中,类是对一类事物的抽象描述。类是一个代码模板,它描述了包含在对象中的属性和方法。而对象是类的一个实例。 比如,我们可以定义一个实体类 Person 来描述人的属性和方法,然后我们可以用实例化出来的对象来表示不同的人。比如有人叫张三,有人叫李四,那么我们可以将张三和李四看作是 Person 类的两个对…

    other 2023年6月26日
    00
  • 华为mate20 pro怎么卸载应用?华为mate20 pro删除应用程序教程

    以下是华为mate20 pro卸载应用的完整攻略,包含详细的步骤: 1. 打开应用管理器 在华为mate20 pro中,卸载应用的方法是通过应用管理器来进行的。因此,首先需要打开应用管理器。 你可以通过以下两种方法来打开应用管理器: 在主屏幕上,长按任何一个应用程序,等待出现应用选项,然后选择“应用管理器”。 或者,在主屏幕上,打开应用抽屉,找到并打开“设置…

    other 2023年6月25日
    00
  • Win10非正常关机使用自动修复陷入无限重启该怎么办?

    Win10非正常关机使用自动修复陷入无限重启该怎么办? 问题描述 在Windows 10系统中,如果在非正常关机的情况下出现自动修复的情况,可能导致系统陷入无限重启,让电脑无法正常启动。那么,该如何解决这个问题呢? 解决办法 1.使用高级选项菜单中的“修复你的电脑”选项 在电脑启动时连按 F8 键,进入高级启动选项菜单。 在菜单中选择“修复你的电脑”选项,按…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部