数据结构(中)树

匿名 (未验证) 提交于 2019-12-02 23:49:02

一、二叉树

存储:

1.线性存储

2.链式存储

1.先序遍历

2.中序遍历

3.后序遍历

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.二叉树的高度

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!