下面是用鍊錶做的乙個二叉樹,包含了二叉樹的建立、先序遍歷,中序遍歷,後序遍歷的遞迴操作和非遞迴操作,還有求二叉樹的的高度,根節點到某一節點的路徑,葉子結點個數和總節點個數。
萬年的標頭檔案
#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...