【算法】二叉树的递归遍历

embedded/2025/3/15 1:49:31/

前序遍历

void preOrder(Node *node){if(node != nullptr){cout << node->data_ << " ";preOrder(node->left_);preOrder(node->right_);}}

中序遍历

void inOrder(Node *node){if (node != nullptr){inOrder(node->left_);cout << node->data_ << " ";inOrder(node->right_);}}

后序遍历

void postOrder(Node *node){if (node != nullptr){postOrder(node->left_);postOrder(node->right_);cout << node->data_ << " ";}}

层序遍历

递归实现求二叉树的层数,求以node为根节点的子树的高度

int level(Node* node){if(node == nullptr){return 0;}int left = level(node->left_);int right = level(node->right_);return left > right ? left + 1 : right + 1;}

递归求二叉树节点的个数

int number(Node *node){if(node == nullptr){return 0;}int left = number(node->left_);int right = number(node->right_);return left + right + 1;}
// 递归层数遍历void levelOrder(){int h = level();for(int i = 0; i < h; i++){levelOrder(root_, i);}}void levelOrder(Node *node, int i){if(node == nullptr){return;}if(i == 0){cout << node->data_ << " ";return;}levelOrder(node->left_, i - 1);levelOrder(node->right_, i - 1);}


http://www.ppmy.cn/embedded/172119.html

相关文章

数据安全之策:备份文件的重要性与自动化实践

在信息化高速发展的今天&#xff0c;数据已成为企业运营和个人生活中不可或缺的重要资源。无论是企业的财务报表、客户资料&#xff0c;还是个人的家庭照片、学习笔记&#xff0c;数据的丢失或损坏都可能带来无法挽回的损失。因此&#xff0c;备份文件的重要性日益凸显&#xf…

K8s 1.27.1 实战系列(九)Volume

一、Volume介绍 Volume 指的是存储卷,包含可被Pod中容器访问的数据目录。容器中的文件在磁盘上是临时存放的,当容器崩溃时文件会丢失,同时无法在多个Pod中共享文件,通过使用存储卷可以解决这两个问题。 1、Volume 的核心作用 ​数据持久化与生命周期管理 Volume 的核心目标…

Spring Boot 项目开发流程全解析

目录 引言 一、开发环境准备 二、创建项目 三、项目结构 四、开发业务逻辑 1.创建实体类&#xff1a; 2.创建数据访问层&#xff08;DAO&#xff09;&#xff1a; 3.创建服务层&#xff08;Service&#xff09;&#xff1a; 4.创建控制器层&#xff08;Controller&…

C++中const与指针的使用详解

在 C++ 中,const 和指针的结合可以产生多种语义,主要涉及指针的指向关系和指向数据的可修改性。以下是常见的几种情况及其区别: 1. 指向常量的指针(Pointer to const) 语法:const T* ptr 或 T const* ptr 含义:指针指向的数据是常量,不能通过指针修改数据,但指针本身…

Redis 集合(Set)

Redis 集合(Set) Redis 是一款高性能的键值数据库,以其高性能、易用性以及丰富的数据结构而广受欢迎。在 Redis 中,集合(Set)是一种重要的数据结构,它支持多种操作,如添加、删除、查找元素,以及集合间的运算。本文将详细介绍 Redis 集合的特点、操作和应用场景。 Redi…

前瞻技术新趋势:改变未来生活方式的技术探索

人工智能在教育中越来越重要。它帮助教师管理课程和提高学生的学习效率。教师可以借助AI来设计个性化的学习计划。通过大数据&#xff0c;AI可以分析每个学生的学习习惯和进度。这样&#xff0c;教师就能更好地了解学生的需求。 AI还可以在课堂上提供实时反馈。这让学生能及时…

JVM内存结构笔记02-堆

文章目录 堆1.定义2.堆的结构为什么JVM新生代对象年龄只能是 0-15? 3.堆内存溢出4.堆内存诊断代码示例 堆 1.定义 堆是Java 虚拟机所管理的内存中最大的一块&#xff0c;Java 堆是所有线程共享的一块内存区域&#xff0c;在虚拟机启动时创建。此内存区域的唯一目的就是存放对…

蓝桥杯备考:图论初解

1&#xff1a;图的定义 我们学了线性表和树的结构&#xff0c;那什么是图呢&#xff1f; 线性表是一个串一个是一对一的结构 树是一对多的&#xff0c;每个结点可以有多个孩子&#xff0c;但只能有一个父亲 而我们今天学的图&#xff01;就是多对多的结构了 V表示的是图的顶点集…