#include <iostream>
#include <string>
using namespace std;
typedef char ElemType;
typedef struct TNode{
string data = "";
TNode *lchild;
TNode *rchild;
}TreeNode, *BiTree;
void createBiTree(BiTree *T){
string ch;
cin >> ch;
if (ch == "#"){
*T = NULL;
return;
}
*T = new TreeNode;
(*T)->data = ch;
createBiTree(&(*T)->lchild);
createBiTree(&(*T)->rchild);
}
int isEmpty(BiTree T){
if (T == NULL)
return 1;
else
return 0;
}
void traverseBiTree(BiTree T){
if (isEmpty(T))
return;
cout << T->data << " ";
traverseBiTree(T->lchild);
traverseBiTree(T->rchild);
}
void inOrderBiTree(BiTree T){
if (isEmpty(T))
return;
inOrderBiTree(T->lchild);
cout << T->data << " ";
inOrderBiTree(T->rchild);
}
void PostOrderBiTree(BiTree T){
if (isEmpty(T))
return;
PostOrderBiTree(T->lchild);
PostOrderBiTree(T->rchild);
cout << T->data << " ";
}
int treeDeep(BiTree T){
int deep = 0;
if (isEmpty(T))
return deep;
int leftDeep = treeDeep(T->lchild);
int rightDeep = treeDeep(T->rchild);
deep = leftDeep > rightDeep ? leftDeep + 1 : rightDeep + 1;
return deep;
}
int main(){
BiTree T;
createBiTree(&T);
traverseBiTree(T);
cout << endl;
inOrderBiTree(T);
cout << endl;
PostOrderBiTree(T);
cout << endl;
cout << "树深:" << treeDeep(T) << endl;
system("pause");
}
关于二叉树的练习2019-11-13
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 二叉树的遍历、按层打印、序列化 这三个操作是不一样的 二叉树的遍历常用递归的形式,那前序遍历来说,先访问根结点,在...
- 小学语文修改病句的方法 修改病句是小学语文考试中常见的题型,在修改病句之前,我们应该清晰的了解有哪些病句现象,下面...
- Tree 树是一种数据结构,由n(>=0)个有限节点Node组成的一个具有层次关系的集合。 树的特点 每个子节点都...