/* 二叉树操作集 */
#include<stdio.h>
#include<stdlib.h>
typedef char ElementType;
typedef struct TreeNode *BinTree;
struct TreeNode {
ElementType Data;
BinTree Left;
BinTree Right;
};
BinTree CreateBinTree(); //建立二叉树
void InOrderTraversal(BinTree bt); //输出二叉树
void PreOrderTraversal(BinTree bt);
int TreeHigh(BinTree bt); //求树高度
void PreorderPrintLeaves(BinTree bt); //先序输出叶节点
int main()
{
BinTree BT = NULL;
BT = CreateBinTree();
InOrderTraversal(BT);
putchar('\n');
PreOrderTraversal(BT);
printf("the high of the tree:%d\n", TreeHigh(BT));
PreorderPrintLeaves(BT);
system("pause");
return 0;
}
/*
建立二叉树
先序遍历 根节点-左子树-右子树
输入:A B D H # # I # # E # # C F # J # # G # # #####
树:
A
BC
DEFG
HI###J##
#####################
*/
BinTree CreateBinTree()
{
BinTree bt;
char node;
scanf_s("%c", &node);
getchar();
if (node != '#') {
bt = (BinTree)malloc(sizeof(struct TreeNode));
bt->Data = node;
bt->Left = CreateBinTree();
bt->Right = CreateBinTree();
}
else
bt = NULL;
return bt;
}
/*
输出二叉树
先序遍历(PreOrderTraversal):根-左-右
中序遍历(InOrderTraversal):左-根-右
后序遍历(PostOrderTraversal): 左-右-根
*/
void InOrderTraversal(BinTree bt)
{
if (bt) {
InOrderTraversal(bt->Left);
printf("%c ", bt->Data);
InOrderTraversal(bt->Right);
}
}
void PreOrderTraversal(BinTree bt)
{
if (bt) {
printf("%c ", bt->Data);
PreOrderTraversal(bt->Left);
PreOrderTraversal(bt->Right);
}
}
/*
递归:求左子树的高度,求右子树的高度,
Max(left,rigth)+1;
*/
int TreeHigh(BinTree bt)
{
if(bt==NULL) return 0;
int lefthigh=TreeHigh(bt->Left)+1;
int righthigh=TreeHigh(bt->Right)+1;
return (righthigh>lefthigh)?righthigh:lefthigh;
/*
if(bt==NULL) return 0;
else{
lefthigh=TreeHigh(bt->Left);
righthigh=TreeHigh(bt->Right);
return (righthigh>lefthigh)?righthigh+1:lefthigh+1;
}
*/
}
/*
递归:输出树的叶节点
*/
void PreorderPrintLeaves(BinTree bt)
{
if(bt){
if(bt->Left==NULL&&bt->Right==NULL){
printf("%c ", bt->Data);
}
PreorderPrintLeaves(bt->Left);
PreorderPrintLeaves(bt->Right);
}
}
二叉树操作集
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 简单来说, 完全二叉树是指按照层次进行遍历的时候所得到的序列与满二叉树相对应 这里提供两种思路和相应的代码: 1....
- BST树即二叉搜索树:1.所有非叶子结点至多拥有两个儿子(Left和Right);2.所有结点存储一个关键字;3....