首先我們需要定義節點類以及二叉樹類:
#includeusing namespace std;
templateclass birnarytree; //先宣告乙個類
templateclass treenode //節點類定義
t data; //資料
treenode *left; //左子節點
treenode *right; //右子節點
};templateclass birnarytree //二叉樹類定義
;
1、前序(先序)遍歷的遞迴實現方法
若二叉樹非空,則依次執行如下操作:
(1)訪問根節點
(2)遍歷左子樹
(3)遍歷右子樹
程式**如下:
template//前序
void birnarytree::preorder()
templatevoid birnarytree::preorder(treenode* currentnode)
}
2、中序遍歷的遞迴實現方法
若二叉樹非空,則依次執行如下操作:
(1)遍歷左子樹
(2)訪問根節點
(3)遍歷右子樹
程式**如下:
template//中序
void birnarytree::inorder()
templatevoid birnarytree::inorder(treenode* currentnode)
}
3、後序遍歷的遞迴實現方法
若二叉樹非空,則依次執行如下操作:
(1)遍歷左子樹
(2)遍歷右子樹
(3)訪問根節點
程式**如下:
template//後序
void birnarytree::postorder()
templatevoid birnarytree::postorder(treenode* currentnode)
}
下面是主函式的測試**:
int main()
{ birnarytreetree;
treenodeadd,sub,mul,div,a,b,c,d,e;
//通過手動建立了乙個二叉樹
程式執行結果為:
二叉樹前序,中序,後序求法
二叉樹的前序,中序,後序序列是根據根節點的訪問順序定義的。即 前序序列 根節點 左子樹 右子樹 中序序列 左子樹 根節點 右子樹 後序序列 左子樹 右子樹 根節點 給出中序序列和另外乙個序列,就可以求出第三個序列。例題 poj 2255 tree recovery include include i...
構建二叉樹(前序 中序,中序 後序)
題目鏈結 1.返回值和引數 輸出前序和中序的 vector int 和起止索引 int,輸出樹的根節點 2.單層遞迴邏輯 前序和中序只有乙個元素,返回,否則在中序中找到前序的首位元素,在將中序按次元素劃分為兩個部分,當前節點的左子樹根據劃分的左邊部分得到,右子樹根據右邊部分得到 3.終止條件 當前陣...
二叉樹 前序和中序得到後序
二叉樹前序 遍歷順序為,根節點 左子樹 右子樹 中序 遍歷順序為,左子樹 根節點 右子樹 後序 遍歷順序為,左子樹 右子樹 根節點 可以發現,二叉樹前序中的第乙個節點為樹的根節點root,然後找出root在中序裡面的位置,就可以把前序和中序分別劃分為左 右子樹兩個部分,然後遞迴呼叫即可。舉個例子,前...