首页 > 代码库 > 算法实验-二叉树的创建和前序-中序-后序-层次 遍历

算法实验-二叉树的创建和前序-中序-后序-层次 遍历

对于二叉树的创建我是利用先序遍历的序列进行创建

能够对于树节点的内容我定义为char型变量 ‘0‘为空,即此处的节点不存在

头文件 Tree.h

//链式二叉树的头文件
#pragma once
#include<iostream>
#include<queue>
using namespace std;
class BinaryTreeNode
{
public:
	char data;
	BinaryTreeNode *leftChild,*rightChild;
	BinaryTreeNode(char _data,BinaryTreeNode *_leftChild=NULL,BinaryTreeNode *_rightChild=NULL)
	{
		data=http://www.mamicode.com/_data;>


 

主函数

//二叉树的创建 先序 中序 后序便利 高度 结点元素个数 和按层便利 2014-4-20
#include<iostream>
#include"Tree.h"
using namespace std;
void Vist(BinaryTreeNode *&t)
{
	if(t){cout<<" "<<(*t).data<<"";return ;}
}
int main()
{
	BinaryTree binaryTree;
	char tree[]={‘A‘,‘B‘,‘C‘,‘0‘,‘0‘,‘0‘,‘D‘,‘0‘,‘0‘};
	//binaryTree.Root(‘a‘);
	//binaryTree.CreateBinaryTree(binaryTree.root);
	binaryTree.CreateBinaryTree(binaryTree.root,tree);
	cout<<endl<<"PreOrder:  ";
	binaryTree.PreOrder(Vist,binaryTree.root);
	cout<<endl<<"InOrder:  ";
	binaryTree.InOrder(Vist,binaryTree.root);
	cout<<endl<<"PostOrder:  ";
	binaryTree.PostOrder(Vist,binaryTree.root);
	cout<<endl<<"Size:  "<<binaryTree.Size(binaryTree.root)<<endl;
	cout<<"Height:  "<<binaryTree.Height(binaryTree.root)<<endl;
	//binaryTree.LevelOrder(Vist);;
	return 0;
}


前序:ABEHGCF

中序:EBGHAFC

后序:EGHBFCA

层次:ABCEHFG

节点个数:7 

树的深度:4

貌似大概就是这样了,唯一要提及的就是书上可能用‘*‘字符表示空,而非‘0‘ 关于这点仅仅要改一下if的推断语句即可了,其它的一切照旧不变.

算法实验-二叉树的创建和前序-中序-后序-层次 遍历