資料結構之二叉樹基礎一

2021-07-28 23:52:42 字數 1170 閱讀 1993

#include #include #include #include #include #include using namespace std;

struct btnode

;typedef struct btnode btnode;

//先序建立

//abc##de#g##f###

btnode* creat(btnode* root)

else

return root;

}void destory(btnode *root)

}void visit(btnode *p)

}void preorder(btnode *p)

}void inorder(btnode *p)

}void postorder(btnode *p)

}void levelorder(btnode *root)

coutrchild)

int cnt1=0,cnt2=0;

if(root->lchild)

if(root->rchild)

return cnt1+cnt2;

}//計算結點數

int countnodes(btnode *root)

return 0;

}//非遞迴遍歷

void preorder_norecursive(btnode *root)

if(!st.empty())

}}void inorder_norecursive(btnode *root)

if(!st.empty())

}}/*

要保證根結點在左孩子和右孩子訪問之後才能訪問,

因此對於任一結點p,先將其入棧。如果p不存在左孩子和右孩子,

則可以直接訪問它;或者p存在左孩子或者右孩子,

但是其左孩子和右孩子都已被訪問過了,則同樣可以直接訪問該結點。

若非上述兩種情況,則將p的右孩子和左孩子依次入棧,這樣就保證了每次取棧頂元素的時候,

左孩子在右孩子前面被訪問,左孩子和右孩子都在根結點前面被訪問。

*/void postorder_norecursive(btnode *root)

else

}}int main()

資料結構之二叉樹基礎二

include include include include include using namespace std struct btnode typedef struct btnode int depth btnode root int n1 depth root lc int n2 dept...

資料結構之二叉樹(一)

設計和編寫程式,按照輸入的遍歷要求 即先序 中序和後序 完成對二叉樹的遍歷,並輸出相應遍歷條件下的樹結點序列。1 遞迴實現 2 include3 include 4using namespace std 56 typedef struct bitnodebitnode,bitree 1011 voi...

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 1 前序遍歷,即先訪問根幾點,然後再訪問左子節點,最後訪問右子節點。2 中序遍歷,即先訪問左子節點,然後再訪問根節點,最後訪問右子節點。3 ...