我是靠谱客的博主 勤奋鞋垫,最近开发中收集的这篇文章主要介绍二叉树建立(C++),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

二叉树的建立、递归遍历、层次遍历

#include<iostream>
#include<queue>
using namespace std;
class tree {
public:
	char value;//结点值
	tree *liftchild;//左子树指针
	tree *rightChild;//右子树指针
};
void creat_tree(tree * &T)//创建二叉树
{
	char ch;
	ch = getchar();//从键盘输入一串字母,依次读取,直至换行键
	if (ch == '#')
		T = NULL;
	else {
		T = new tree;
		T->value = ch;
		creat_tree(T->liftchild);
		creat_tree(T->rightChild);
	}
}
void VLR(tree *T)//先序遍历二叉树
{
	if (T == NULL)
		return;
	else {
			cout << T->value;
			VLR(T->liftchild);
			VLR(T->rightChild);
	}
}
void LVR(tree *T)//中序遍历二叉树
{
	if (T == NULL)
		return;
	else {
		LVR(T->liftchild);
		cout << T->value;
		LVR(T->rightChild);
	}
}
void LRV(tree *T)
{
	if (T == NULL)
		return;
	else {
		LRV(T->liftchild);
		
		LRV(T->rightChild);
		cout << T->value;
	}

}
int caclnum(tree* T)//计算结点个数
{
	if (T == NULL)
		return 0;
	else
	{
		return 1 + caclnum(T->liftchild) + caclnum(T->rightChild);//计算二叉树结点个数
	}

}
void LevelOrder(tree * T)//层次遍历
{
	if (T == NULL)
		return;
	queue<tree *> deq;//建立一个队列容器
	
	deq.push(T);
	while (!deq.empty())
	{
		tree *tr = deq.front();
		cout << tr->value << endl;
		deq.pop();
		if (tr->liftchild != NULL)
			deq.push(tr->liftchild);

		if (tr->rightChild!= NULL)
			deq.push(tr->rightChild);
	}
}
int main() {

	tree * T ;
	creat_tree(T);
	VLR(T);//前序遍历
	cout << endl;
	LVR(T);//中序遍历
	cout << endl;
	LRV(T);//后序遍历
	cout << caclnum(T);//统计结点个数
	LevelOrder(T);//层次遍历
	system("pause");
	
	return 0;
}

最后

以上就是勤奋鞋垫为你收集整理的二叉树建立(C++)的全部内容,希望文章能够帮你解决二叉树建立(C++)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部