首先回顧一下,利用已知的一棵二叉樹,寫出它的先、中、後層次的遍歷
已知一棵樹:
先序遍歷(根、左、右):
0137849256
中序遍歷(左、根、右):
7381940526
後序遍歷(左、右、根):
7839415620
現在根據之前的先序、中序、後序中的兩個組合推出原先的二叉樹的結構(兩兩的組合必須包含中序)。
假定有一顆樹的先序遍歷為:0137849256 中序遍歷為:7381940526
思路:1、首先根據先序遍歷確定根,根為0,所以根據根是0可以劃分為兩部分:
0 和137849256
2、接下來根據中序遍歷的資訊(因為知道根是0了),所以可以劃分為:
738194 0 526
3、再根據先序遍歷的137849256 確定為1為左子樹的根,所以根據中序的738194就可以劃分為:
738 1 94
4、又因為中序的738按照左、根、右的思路所以3為根
5、根據以上的思路分析(可以自己在紙上面畫出來),就可以把這棵樹畫出來了
假定有一顆樹的後序遍歷為:7839415620 中序遍歷為:7381940526
思路:1、根據後序(左、右、根)的順序,確定根為0,所以後序分為:
783941562和0
2、中序(左、根、右)根據後序的資訊可以劃分為738194 0 526
所以根據中序738194 0 526的劃分,後序的排分的話為783941 562 和0
所以1為783941子樹的根,2為562的根
3、因為1為根,所以中序的738194 可以劃分為738 1 94 ,所以3為738的根,4為94的根
二叉樹 判斷是否同一棵樹
搜尋樹表示 建立搜尋樹 判斷序列與搜尋樹是否一致 define crt secure no warnings include stdlib.h include stdio.h 搜尋樹表示 typedef struct treenode tree struct treenode tree newnod...
二叉樹 判斷一棵樹是否是完全二叉樹
原創 2017年07月27日 19 16 05 如何判斷乙個樹是否為完全二叉樹?思路一 將所有的結點全部押入佇列中,空也壓入,每次判斷佇列的頭如果佇列頭為空了則跳出迴圈,如果此後佇列中還有元素則不是完全二叉樹。bool iscompletetree binarytreenode proot q.po...
二叉樹 判斷一棵樹是否是平衡二叉樹
平衡二叉樹 空樹或者左右兩個孩子高度差不超過1 在涉及到二叉樹的題目時,遞迴函式非常好用 列出可能性 整理出返回值的型別 整個遞迴過程按照同樣的結構得到子樹的資訊,整合子樹的資訊,加工出應該返回的資訊,向上返回 1.左子樹是否平衡 2.右子樹是否平衡 3.左子樹的高度 4.右子樹的高度 根據可能性,...