二叉樹遍歷

2021-07-14 12:14:32 字數 858 閱讀 3789

給定一顆二叉樹的前序遍歷和中序遍歷,求其後序遍歷。

思路:假設我們輸入的前序為:fdxeag;中序為:xdefag。

根據前序我們可以確定根節點為f。中序佇列就被f分為兩部分xde和ag,所以xde屬於f的左子樹部分,而ag屬於f的右子樹部分,此時參考剩餘的前序序列:dxe+ag,可以知道d為f左子樹的根節點,a為右子樹的根節點...我們利用這種思想,可以遞迴建立出二叉樹。

注意:我們要申請乙個結點空間,此時這個結點的左子樹和右子樹必須記得初始化賦值為空,不然在建樹的過程中,遞迴不能跳出。

#include#includestruct nodetree[50];

int loc;//儲存靜態陣列中已經分配的字串

char str1[30];

char str2[30];

node *creat()

node *build(int s1,int e1,int s2,int e2)

} if(rootidx!=s2)

if(rootidx!=e2)

return ret;

}void postorder(node *t)

}int main()

return 0;

}

注意一下遞迴建樹的過程,開始在建立右子樹的時候,s1+(rootidx-s2)+1丟掉了+1導致建樹失敗,自己實現的時候要細心。

結果;

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 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 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...