二叉樹的建立及相應操作

2021-09-30 17:01:07 字數 1091 閱讀 7686

下面是用鍊錶做的乙個二叉樹,包含了二叉樹的建立、先序遍歷,中序遍歷,後序遍歷的遞迴操作和非遞迴操作,還有求二叉樹的的高度,根節點到某一節點的路徑,葉子結點個數和總節點個數。

萬年的標頭檔案

#include #include #include #define max_tree_size 100

using namespace std;

二叉樹的鏈式儲存結構:

typedef char telemtype;

typedef struct bitnode bitnode,*bitree;

建立二叉樹,並求二叉樹總結點數

int createbitree(bitree &bt,int &count_node)

return 1;

}

先序遍歷二叉樹的遞迴操作:

void preorder (bitree bt) 

}

中序遍歷二叉樹的遞迴操作

void inorder (bitree bt) 

}

後序遍歷二叉樹的遞迴操作:

void postorder (bitree bt) 

if (p->lchild!=null)}}

}

中序遍歷二叉樹的非遞迴操作:

void nrinorder(bitree bt)

if (top>0)

}while (p!=null||top>0);

}

後序遍歷二叉樹的非遞迴操作:

void nrpostorder(bitree bt)

if(top>0)}}

} while (p!=null||top>0);

}

選單頁面:

void menu()

free (bt);

return 0;

}

二叉樹建立及部分操作

宣告 為了封裝性,下面所有的遞迴函式都設為私有,用乙個公有方法呼叫。include include include using namespace std 定義節點 templateclass tree node templateclass tree else 前序遞迴遍歷的函式 void preo...

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...

二叉樹的建立及遍歷

對任意的二叉樹的結點結構都可以設定為如下結構,leftchild指向該結點的左孩子,rightchild指向右孩子,data域記錄結點資訊,以此結點結構形成的二叉樹稱為二叉鍊錶。儲存結構型別為 typedef char elemtype typedef struct nodebitnode,bitr...