二叉树模板

整理了下二叉树模板(持续更新中,以后碰到新的函数会慢慢补充)接下来就是代码,每个函数都有备注,也欢迎大家不断补充,一起完善。


代码:


#include <iostream> 
#include <queue>
using namespace std;
struct Tree
{
	int data;//数据域
	Tree *lchild ,*rchild;//分别为左孩子有孩子  
};

Tree *buildTree(Tree *bt)
{
	int x;
	cin>>x;
	if(x==0) bt=NULL;//建立树的时候如果碰到0就代表空的节点 ,根据题意 
	else{
		bt=new Tree;//分配空间
		bt->data=x;
		bt->lchild=buildTree(bt->lchild);
		bt->rchild=buildTree(bt->rchild);
	}
	return bt; 
}

void bianli(Tree *bt)//前序遍历,中序以及后续 
{
	if(bt==NULL) return;
	else{
		cout<<bt->data;
		bianli(bt->lchild);
		bianli(bt->rchild);
	}
	/*
	中序遍历: bianli(bt->lchild);cout<<bt->data;bianli(bt->rchild);
	后序遍历: bianli(bt->lchild);bianli(bt->rchild);cout<<bt->data; 
	*/ 
} 

void cengxv(Tree *bt)
{
	queue<Tree*>Q;//定义一个队列 
	Tree *temp;//定义一个新的结点 
	if(bt==NULL) return ;
	Q.push(bt);
	while(!Q.empty()){
		temp=Q.front(); Q.pop();
		cout<<temp->data<<" ";
		if(temp->lchild!=NULL) Q.push(temp->lchild);
		if(temp->rchild!=NULL) Q.push(temp->rchild);
	}
}

int deepth(Tree *bt)//计算二叉树的深度 
{
	if(bt==NULL) return 0;
	else
		return max(deepth(bt->lchild),deepth(bt->rchild))+1;//画图模拟一遍 
} 

int main()
{
	Tree *root;//树的根,还未分配空间,只是声明; 
	root=buildTree(root);//建树时需要将根节点的值传出来。
	 
	bianli(root);//前序中序后序遍历输出
	cengxv(root);//层序遍历输出 
	deepth(root);//计算二叉树深度 
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值