二叉樹的遍歷分三種:先序、中序、後序
假如有一棵樹
先序遍歷:根節點->左孩子->右孩子,則上圖樹的先序遍歷結果為:abc
中序遍歷:左孩子->根節點->右孩子,則上圖樹的遍歷結果為:bac
後序遍歷:左孩子->右孩子->根節點,則遍歷結果為:bca
ps:注意根節點的位置,先序在第乙個,中序在中間,後續在最後。
樹的定義就是遞迴的,特別是鏈式儲存結構的樹,因此樹的遍歷通常使用遞迴的方法實現的。
#include
#include
#define error 0
#define ok 1
#define overflow -1
#define true 1
#define false 0
typedef
char elemtype;
typedef
int status;
//二叉樹結構體
typedef
struct bitnode bitnode,
*bitree;
void
createtree
(bitree &t, elemtype e)
void
printnode
(bitree n)
void
preorder
(bitree t)
}void
inorder
(bitree t)
}void
postorder
(bitree t)
}//在t樹中查詢元素e,並將結果儲存到ins_node
status findnode
(bitree t, elemtype e, bitree &ins_node)
findnode
(t->lnode, e, ins_node)
;findnode
(t->rnode, e, ins_node);}
return error;
}//在樹的左節點插入
status insertlight
(bitree &t, elemtype goal, elemtype data)
//在樹的右節點插入
status insertright
(bitree &t, elemtype goal, elemtype data)
//測試遍歷方法
intmain()
本文完.
極客技術空間:
資料結構 二叉樹的三種遍歷方式
樹是n n 0 個有限個資料的元素集合,形狀像一顆倒過來的樹。二叉樹是一顆特殊的樹,二叉樹每個節點最多有兩個孩子結點,分別稱為左孩子 右孩子 測試用例 前序遍歷 先根遍歷 1 先訪問根節點 2 前序訪問左子樹 3 前序訪問右子樹 1 2 3 4 5 6 中序遍歷 1 中序訪問左子樹 2 訪問根節點 ...
二叉樹三種遍歷方式
三種遍歷方式是按照根節點的訪問順序來定義的 1 前序遍歷 先訪問根結點 然後遍歷左子樹,最後遍歷右子樹 並且,在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。根左右 2 中序遍歷 先遍歷左子樹 然後訪問根結點,最後遍歷右子樹 並且,在遍歷左 右子樹時,仍然先遍歷左子樹,然後訪問...
重建二叉樹 遍歷二叉樹的三種方式
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。示例 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7限制 0 節點個數 5000 這個題的解法...