首页 > 编程语言 >c++实现二叉树中序遍历

c++实现二叉树中序遍历

时间:2023-06-16 23:39:38浏览次数:62  
标签:遍历 TreeNode inorderTraversal 中序 c++ 二叉树 root left

#include <iostream>

using namespace std;


// 定义二叉树节点结构体

struct TreeNode {

   int val;

   TreeNode* left;

   TreeNode* right;

   TreeNode(int x) : val(x), left(NULL), right(NULL) {}

};


// 中序遍历函数

void inorderTraversal(TreeNode* root) {

   if (root == NULL) {

       return;

   }

   inorderTraversal(root->left);   // 遍历左子树

   cout << root->val << " ";       // 输出当前节点的值

   inorderTraversal(root->right);  // 遍历右子树

}


int main() {

   // 构建二叉树

   TreeNode* root = new TreeNode(1);

   root->left = new TreeNode(2);

   root->right = new TreeNode(3);

   root->left->left = new TreeNode(4);

   root->left->right = new TreeNode(5);


   // 中序遍历

   inorderTraversal(root);


   return 0;

}


在这个实现中,我们首先定义了一个二叉树节点的结构体,包含节点的值、左右子节点指针。然后,我们定义了一个inorderTraversal函数,用于进行中序遍历。在这个函数中,我们首先判断当前节点是否为空,如果不为空,则递归遍历左子树,输出当前节点的值,再递归遍历右子树。在主函数中,我们构建了一个二叉树,并调用inorderTraversal函数进行中序遍历。

标签:遍历,TreeNode,inorderTraversal,中序,c++,二叉树,root,left
From: https://blog.51cto.com/u_16163647/6502499

相关文章

  • 《C++》友元
    友元--friend友元可以访问类的私有属性classPerson{ friendvoidtest();public: Person(intn) { this->n=n; }private: intn;};voidtest(){ Personp(20); cout<<p.n<<endl;}intmain(){ test(); system("pause"); return0;}友......
  • 【初识C++】(缺省参数和函数重载)
    @TOC一、缺省参数1.缺省参数定义缺省参数是在函数的声明中给定参数一个指定的值。如果传参没有给定参数,那就按照声明中默认的缺省值,如果给定了参数,那就按照给定的参数值。比如:usingnamespacestd;voidFunc(inta=0){ cout<<a<<endl;}intmain(){ Func(); //......
  • c++强制类型转换的不同
    参考https://blog.csdn.net/luolaihua2018/article/details/111996610https://zhuanlan.zhihu.com/p/368267441https://zhuanlan.zhihu.com/p/151744661https://blog.csdn.net/Behold1942/article/details/111657231https://stackoverflow.com/questions/332030/when-sho......
  • c++ linux 学习第二课
    c++linux学习第二课一、GCC的工作流程:gcc编译器将C源文件到生成一个可执行程序中间一共经历四个步骤:二、gcc常用参数:-v版本-E生成预处理文件-S生成汇编文件-c只编译,生成目标文件.o文件-I(大写的i)指定头文件所在的路径-L指定库文件所在的路径-l(小写的L)......
  • C++面试八股文:在C++中,你知道哪些运算符?
    C++面试八股文:在C++中,你知道哪些运算符?某日二师兄参加XXX科技公司的C++工程师开发岗位第11面:面试官:在C++中,你都知道都哪些运算符?二师兄:啥?运算符?+-*/=这些算吗?面试官:嗯,还有其他的吗?二师兄:当然还有,+=,-=,*=,/=,==,还有逻辑运算,位运算等。面试官:好的。那你知道这些运算......
  • C++通讯录管理系统[2023-06-16]
    C++通讯录管理系统[2023-06-16]通讯录管理系统手机通讯录中的联系人的信息既可以存储在手机中,也可以存储在手机卡中,也可以同时存储在两个位置上(假设每个位置上的存储容量为1000,即手机卡中或手机上最多只能存储1000个联系人)。存储在手机中的联系人的信息只包含姓名和电话号码两项......
  • c++一些零碎记录
    c++11alignasstructalignas(8)S{}//定义结构体同时指定分配给结构体的大小为8字节alignof(与内存对齐相关)structobj{chara;intb;}alignof(obj)=4;//alignof(obj)=4表示对于obj,其内存对齐是以多少字节为单位对齐对于单个变量char其alignof(char)=1,单个字节对齐......
  • 对C++中const的说明
    对C++中const的说明在C++中,const是一个关键字,用于指定对象或变量是只读的,即不可修改。它可以应用于不同的上下文中,包括:对象和变量声明:通过在变量或对象的声明前加上const关键字,可以将其标记为只读。这意味着一旦被初始化,就不能再修改该对象或变量的值。constintx=10;//声明一......
  • C++ multi process share value via write and read data from serialized file,the b
    #include<atomic>#include<chrono>#include<cmath>#include<condition_variable>#include<cstddef>#include<forward_list>#include<fstream>#include<functional>#include<future>#include<iom......
  • vscode+cmake c++ hello world!
    1.新建一个测试目录hello及一些必要文件D:\HELLO\HELLOCPP│CMakeLists.txt└─main.cppCMakeLists.txt#工程名project(Hello)#生成目标add_executable(Hellomain.cpp)hello.cpp#include<iostream>usingnamespacestd;intmain(){cout<<"hellowo......