码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构(中)树

时间:2019-07-20 10:05:16      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:height   eof   tor   ||   stack   size   style   class   info   

一、二叉树

存储:

1.线性存储

技术图片

2.链式存储

技术图片

 

 遍历:

1.先序遍历

技术图片

2.中序遍历

技术图片

3.后序遍历

 技术图片

4.先序遍历堆栈(转自https://blog.csdn.net/weixin_37983220/article/details/84109033 )

void PreOrderTraversal(BinTree BT)
{
BinTree T = BT;
Stack S = (Stack)malloc(sizeof(SNode));
S->Top = -1;
while (T || !IsEmpty(S))
{
while (T)    //一直向左,并将沿途节点压入堆栈
{
Push(S, T);
printf("%C", T->Data);
T = T->Left;
}
if (!IsEmpty(S))
{
T = Pop(S);
T = T->Right;
}
}
free(S);
}

5.中序遍历堆栈

void InOrderTraversal(BinTree BT)
{
BinTree T = BT;
Stack S = (Stack)malloc(sizeof(SNode));
S->Top = -1;
while (T || !IsEmpty(S))
{
while (T)    //一直向左,并将沿途节点压入堆栈
{
Push(S, T);
T = T->Left;
}
if (!IsEmpty(S))
{
T = Pop(S);
printf("%C", T->Data);
T = T->Right; 
}
}
free(S);
}

6.后序遍历堆栈

void PostOrderTraversal(BinTree BT)
{
BinTree T = BT;
Stack S = (Stack)malloc(sizeof(SNode));

Stack OutPut = (Stack)malloc(sizeof(SNode));
S->Top = -1;
OutPut->Top = -1;
while (T || !IsEmpty(S))
{
while (T)    //一直向左,并将沿途节点压入堆栈
{
Push(S, T);
Push(OutPut, T);
T = T->Right;
}
if (!IsEmpty(S))
{
T = Pop(S);
T = T->Left;
}
}
while (OutPut->Top != -1)
{
printf("%c", Pop(OutPut)->Data);
}
free(S);
free(OutPut);
}

7.层次遍历输出

技术图片

8.层序遍历输出叶子节点

技术图片

9.二叉树的高度

技术图片

 

数据结构(中)树

标签:height   eof   tor   ||   stack   size   style   class   info   

原文地址:https://www.cnblogs.com/littlepage/p/11216460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!