2021-09-29

C++实现二叉树的创建与中序遍历

#include<iostream>
#include"string"
using namespace std;
typedef char datatype;//方便后期修改数据类型
class BinTreeNode//定义二叉树节点的类
{
public:
	BinTreeNode* lchild;
	BinTreeNode* rchild;
	datatype  value;
	//不知道为什么要初始化,而且后面还影响了我的判断,所以将初始化注释了;
	/*BinTreeNode()
		{
			lchild = nullptr;
			rchild = nullptr;
		}*/
};
class BinaryTree//定义二叉树的类
{
public:
	BinTreeNode* root;//定义二叉树的根节点;
	BinaryTree() { root = nullptr; }//构造函数初始化根节点
	BinTreeNode* CreatTree();//创建二叉树
	void MidorderTraverse(BinTreeNode* roo);//中序遍历二叉树
};
/*c语言的创建函数的参数都是传入一个根节点指针的引用root,返回值是void,到c++这写创建函数我是很懵逼的,因为根节点就是二叉树树类的数据成员,只能先参考书上写的,思路是创建一颗二叉树,返回二叉树根节点的指针*/
BinTreeNode* BinaryTree::CreatTree()
{
	BinTreeNode* T;
	char ch;
	ch=getchar();
    if (ch == '#')
		T = nullptr;
	else
	{
		T = new BinTreeNode;
		T->value = ch;
		T->lchild = CreatTree();
		T->rchild = CreatTree();
	}
	return T;
}

void BinaryTree::MidorderTraverse(BinTreeNode *roo)
{
	if (roo != nullptr)
	{
		MidorderTraverse(roo->lchild);
		cout << roo->value;
		MidorderTraverse(roo->rchild);
	}
}
![这是输入,以及中序遍历的输出结果](https://img-blog.csdnimg.cn/bbf14425e0394a9b8cb764172b9c4786.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAbTBfNDY5Mjk4Nzg=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
**要注意的一下**:在我开始输入的时候,我的输入是AB#CDE#;程序总是无法中序遍历;在我开始看来一个叶子节点在初始化后左右指针就是空了,所以没有加入叶子节点的两个##,导致建立二叉树总是失败;
**最后希望能帮助到你**继续努力


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值