遞迴先序:1.先輸出根2.再輸出左子3.最後輸出右子。
中序:1.先輸出左子2.再輸出根3.最後輸出右子。
後序:1.先輸出左子2.再輸出右子3.最後輸出根。
遞迴出棧時會依次輸出。
//樹的先中後序
#include
//先序-根左右
intpreorder
(int arr,
int n)
printf
("%d "
,arr[n]);
preorder
(arr,
2*n+1)
;preorder
(arr,
2*n+2)
;}//中序-左根右
intinorder
(int arr,
int n)
inorder
(arr,
2*n+1)
;printf
("%d "
,arr[n]);
inorder
(arr,
2*n+2)
;}//後序-左右根
intlatorder
(int arr,
int n)
latorder
(arr,
2*n+1)
;latorder
(arr,
2*n+2)
;printf
("%d "
,arr[n]);
}int
main()
;preorder
(arr,0)
;//先序
printf
("\n");
inorder
(arr,0)
;//中序
printf
("\n");
latorder
(arr,0)
;//後序
return0;
}
樹的先序 中序 推後序, 後序 中序 推先序
根據中序遍歷 先序遍歷構建 輸出後序遍歷 後序遍歷為左右根 遞迴的返回條件中序遍歷中 左子樹和右子樹 過i將中序遍歷中的樹分為左子樹和右子樹 i為中序遍歷的根節點 需要輸出的結點 每棵樹都是自己 的根結點 2.確定左子樹的start,與 end範圍,同時通過先序陣列找到此時的根節點 上乙個根結點 1...
樹 先序中序後序遍歷
題目分析 題目描述 description 求一棵二叉樹的前序遍歷,中序遍歷和後序遍歷 輸入描述 input description 第一行乙個整數n,表示這棵樹的節點個數。接下來n行每行2個整數l和r。第i行的兩個整數li和ri代表編號為i的節點的左兒子編號和右兒子編號。輸出描述 output d...
後序 中序 》先序
已知後序與中序輸出前序 先序 後序 3,4,2,6,5,1 左右根 中序 3,2,4,1,6,5 左根右 分析 因為後序的最後乙個總是根結點,令i在中序中找到該根結點,則i把中序分為兩部分,左邊是左子樹,右邊是右子樹。因為是輸出先序 根左右 所以先列印出當前根結點,然後列印左子樹,再列印右子樹。左子...