二叉樹遍歷小技巧

2021-07-26 15:52:30 字數 1138 閱讀 5890

#include 

#include

#include

void houxu(struct tree *root)

}struct node

;struct node *creat(int n,char *str1,char *str2)//二叉樹的重建與後續遍歷輸出

root->left=creat(i,str1+1,str2);//(左子樹的長度,左子樹在str1中開始位置的位址,左子樹在str2中開始位置的位址)

root->right=creat(n-i-1,str1+i+1,str2+i+1);//(右子樹的長度,右子樹在str1中開始位置的位址,右子樹在str2中開始位置的位址)

return root;

};int main()

沒錯,我的第一反應就是這樣,先根據前序遍歷中序遍歷構建出乙個這樣的二叉樹,然後再根據以前學的後序遍歷輸出再把它後序遍歷輸出來,但實際上這裡可以節省一步

#include 

#include

#include

struct node

;struct node *creat(int n,char *str1,char *str2)//二叉樹的重建與後續遍歷輸出

root->left=creat(i,str1+1,str2);//(左子樹的長度,左子樹在str1中開始位置的位址,左子樹在str2中開始位置的位址)

root->right=creat(n-i-1,str1+i+1,str2+i+1);//(右子樹的長度,右子樹在str1中開始位置的位址,右子樹在str2中開始位置的位址)

printf("%c",root->data);//後序遍歷輸出

return root;

};int main()

沒錯,就是在它的二叉樹構建裡面,我們可以直接把這個後序遍歷直接輸出來,因為這個二叉樹的構建核心思想就是通過遞推把它的根找到,找完左邊的再找右邊的,然後再返回上一根節點,沒錯,這就和後序遍歷的規則一樣了,先找左邊的,再找右邊的,最後回到根,所以我們在構建這個二叉樹的時候就可以順著把它的後序遍歷順序輸出來了(**小白,如有錯誤,歡迎指出)

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...