二叉樹三種遍歷的相互轉換

2022-05-21 00:51:08 字數 873 閱讀 7951

1.已知先序中序求後序

只要掌握各個遍歷的特點,就能輕鬆解決問題 先序:給定了根的遍歷順序 中序:根的左右兩邊分別為左子樹和右子樹 所以可以通過控制根的位置 遞迴進入左子樹和右子樹 控制格式輸出即可

#include #define n 1005

using namespace std;

int a[n];int b[n];

int n;

void dfs(int l,int r,int size)

dfs(l+1,r,i-1);

dfs(l+i,i+r,size-i);

if(size==n) printf("%d\n",a[l]);

else printf("%d ",a[l]);

}int flag;

int main()

dfs(1,1,n);

}return 0;

}

2.已知中序後序求前序

可以根據左子樹的個數在中序和後序中相等的規則 可以確定進入左子樹的根的位置 而進入右子樹的根的位置則為前乙個根的位置-1 然後遞迴進行即可

#include #define n 1005

using namespace std;

int a[n];int b[n];

int n;

void dfs(int l,int r,int size)

dfs(l-(size-i+1),r,i-1);

dfs(l-1,r+i,size-i);

}int flag;

int main()

dfs(n,1,n);

printf("\n");

}return 0;

}

二叉樹的三種遍歷

重新又看了一遍二叉樹 binary tree 發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣 前序遍歷 preorder 是先輸出自己,然後左,最後右。中序遍歷 inorder 是先左,再輸出自己,最後右。後序遍歷 postorder 是先左,再右,最後輸出自己。所謂的xx遍歷...

二叉樹的三種遍歷

在這裡說一下二叉樹的三種遍歷 前序,中序,後序 正文 前序遍歷 是指先從根開始,再依次找尋左子結點 右子結點。學習時的經驗就是 看圖學習 第乙份圖 這樣看來 1.先找最基本的根結點 詞窮 這裡是a。2.接著找以a為根結點的左子結點,這裡是b。3.而以b為根結點也會出現左右結點,這就又有了乙個左結點d...

二叉樹的三種遍歷

二叉樹是n n 0 個節點的有限集合,它或者是空樹 n 0 或者是有乙個根節點及兩顆不相交的且分別稱為左 右子樹的二叉樹所組成。可見,二叉樹同樣具有遞迴性質。特別需要注意的是,儘管樹和二叉樹的概念之間有許多聯絡,但它們是兩個不同的概念,樹和二叉樹之間最主要的區別是 二叉樹結點的子樹要區分左子樹和右子...