⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitreenode3.cpp

📁 实现二叉树左孩子
💻 CPP
字号:
#include <iostream.h>
#include<malloc.h>
#include <stdlib.h>
int n;        //节点个数
typedef struct BiTNode   //二叉树的二叉链表存储表示
{
	char data;
	struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree &T,int n)   //按前序次序构造二叉链表表示的二叉树T
{
	char c;int left,right;
	if(n!=NULL)
	{
		if(!(T=(BiTNode*)malloc(sizeof(BiTNode))))
		exit(0);
		cin>>c;
		n--;
		T->data=c;    //生成根节点
		cin>>left;
		cin>>right;
		if(left==-1)
			T->lchild=NULL;
		else
			CreateBiTree(T->lchild,n);   //构造左子树
		if(right==-1)
			T->rchild=NULL;
		else
			CreateBiTree(T->rchild,n);   //构造右子树
	}
	return 1;
}
int PrintElement(char e)   //输出元素e的值
{
	cout<<e<<" ";
	return 1;
}
int PreOrderTraverse(BiTree T,int (*Visit)(char e))    //前序遍历二叉树
{
	if(T)
	{
		if(Visit(T->data))                             //访问根节点
			if(PreOrderTraverse(T->lchild,Visit))      //前序遍历左子树
				if(PreOrderTraverse(T->rchild,Visit))  //前序遍历右子树
					return 1;
				return -1;
	}
	else 
		return 1;
}
int InOrderTraverse(BiTree T,int (*Visit)(char e))     //中序遍历二叉树
{ 
	if(T)
	{
		if(InOrderTraverse(T->lchild,Visit))
			if(Visit(T->data))
				if(InOrderTraverse(T->rchild,Visit))
					return 1;
				return -1;
	}
	else
		return 1;
}
int PostOrderTraverse(BiTree T,int (*Visit)(char e))   //后序遍历二叉树
{
	if(T)
	{
		if(PostOrderTraverse(T->lchild,Visit))
			if(PostOrderTraverse(T->rchild,Visit))
				if(Visit(T->data))
					return 1;
				return -1;
	}
	else
		return 1;
}
void main()
{
	BiTree T;
	cout<<"请输入二叉树内容:第一行为节点数n,后面的n行是节点a -1 3的形式:"<<endl;
	cin>>n;
	CreateBiTree(T,n);
	cout<<"您输入的二叉树的前序遍历结果是:"<<endl;
	PreOrderTraverse(T,PrintElement);
	cout<<endl;
	cout<<"您输入的二叉树的中序遍历结果是:"<<endl;
	InOrderTraverse(T,PrintElement);
	cout<<endl;
	cout<<"您输入的二叉树的后序遍历结果是:"<<endl;
	PostOrderTraverse(T,PrintElement);
	cout<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -