二叉樹的建立及其遍歷

2022-07-11 16:18:11 字數 1100 閱讀 8094

#include #include struct bintree

;typedef struct bintree *bintreenode;

typedef struct node *pnode;//棧的儲存結構

struct node

;struct linkstack//鏈結棧型別定義

;typedef struct linkstack *plstack;//鏈結棧型別定的指標型別

plstack cstack()//建立空棧

int isemptystack(plstack plstack) //判斷是否是空棧

void push(plstack plstack, bintreenode x) //進棧運算 }

void pop (plstack plstack)//出棧運算

}bintreenode top(plstack plstack)//取棧頂元素

}bintreenode cbintree()

else

p=null;

return p;

}void npreoreder(bintreenode t)

//先根次序次序周遊 }}

void ninoder(bintreenode t)

//中根次序周遊

c=top(s);pop(s);c=c->rchild;

}while(c!=null||!isemptystack(s));

}void npostorder(bintreenode t)

p=top(s); pop(s);

if(!isemptystack(s)&&top(s)->lchild==p)

p=top(s)->rchild;

else p=null; }}

int dfs_tree(bintreenode t,int a)

if(t->lchild!=null)return dfs_tree(t->lchild,a+1);

if(t->rchild!=null)return dfs_tree(t->rchild,a+1);

return a;

}int main()

二叉樹建立及其迴圈遍歷

二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。一棵深度為k,且有2 k 1個節點的二叉樹,稱為滿二叉樹。這種樹的特點是每一層上的節點數都是最大節點數。而在一棵二叉樹中,除最後一層...

二叉樹及其遍歷

滿二叉樹肯定是完全二叉樹,完全二叉樹不一定是滿二叉樹 二叉樹的遍歷 先序遍歷 也叫做先根遍歷 前序遍歷,首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。中序遍歷 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。...

二叉樹及其遍歷

二叉樹是乙個很重要的儲存結構,所以和大家分享一下我對二叉樹的理解並結合 希望讓大家都能對二叉樹有乙個最清晰的認識 首先,二叉樹是每個節點最多有兩個子樹的樹結構,這是二叉樹的定義,二叉樹的結構如下圖 可以看到二叉樹必要的是根節點,也就是a,每個節點都會有左子節點和右子節點,那麼從b開始看,它又是乙個二...