数据结构 - 二叉树的建立+遍历C++

代码:
#include <iostream>
using namespace std;
#define ERROR 0

typedef struct BiTNode {
	char data;
	struct BiTNode *lchild, *rchild; /*左右孩子指针*/
} BiTNode, *BiTree;

int CreateBiTree(BiTree &T) ;//按先序次序输入字符构造二叉树
void PreOrderTraverse(BiTree T) ;//先序遍历二叉树
void InOrderTraverse(BiTree T) ;//中序遍历二叉树
void PostOrderTraverse(BiTree T) ;//后序遍历二叉树
int BiTreeDepth(BiTree T);//计算树的深度

int main() {
	int depth;
	BiTree T;
	cout << "按先序次序输入字符构造二叉树,输入$表示该位置为空二叉树:\n";
	CreateBiTree(T);
	cout << "输出该二叉树的先序序列:\n";
	PreOrderTraverse(T);
	cout << endl;
	cout << "输出该二叉树的中序序列:\n";
	InOrderTraverse(T);
	cout << endl;
	cout << "输出该二叉树的后序序列:\n";
	PostOrderTraverse(T);
	cout << endl;
	cout << "输出该二叉树的高度,根结点为第1层,空树为0层:\n";
	depth = BiTreeDepth(T);
	cout << "树的深度为:" << depth << endl;
	return 0;
}

//按先序次序输入字符构造二叉树
int CreateBiTree(BiTree &T) {
	char ch;
	cin >> ch;
	if (ch == '$')
		T = NULL;
	else {
		T = new BiTNode;
		T->data = ch;
		CreateBiTree(T->lchild);
		CreateBiTree(T->rchild);
	}
	return 0;
}

//先序遍历二叉树
void PreOrderTraverse(BiTree T) {
	if (T) {
		cout << T->data;
		PreOrderTraverse(T->lchild);
		PreOrderTraverse(T->rchild);
	}
}

//中序遍历二叉树
void InOrderTraverse(BiTree T) {
	if (T) {
		InOrderTraverse(T->lchild);
		cout << T->data;
		InOrderTraverse(T->rchild);
	}
}

//后序遍历二叉树
void PostOrderTraverse(BiTree T) {
	if (T) {
		PostOrderTraverse(T->lchild);
		PostOrderTraverse(T->rchild);
		cout << T->data;
	}
}

//计算树的深度
int BiTreeDepth(BiTree T) {
	int m = 0, n = 0;
	if (T == NULL)      // 如果是空树
		return 0;
	else {
		m = BiTreeDepth(T->lchild);
		n = BiTreeDepth(T->rchild);
		if (m > n)
			return (m + 1);
		else
			return (n + 1);
	}
}
运行:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值