只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。
首先我想先改變這幾個遍歷的名字(前根序遍歷,中根序遍歷,後根序遍歷);前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。
1. 前根序遍歷:先遍歷根結點,然後遍歷左子樹,最後遍歷右子樹。
abdhecfg
2.中根序遍歷:先遍歷左子樹,然後遍歷根結點,最後遍歷右子樹。
hdbeafcg
3.後根序遍歷:先遍歷左子樹,然後遍歷右子樹,最後遍歷根節點。
hdebfgca
已知一棵二叉樹的前根序序列和中根序序列,構造該二叉樹的過程如下:
1. 根據前根序序列的第乙個元素建立根結點;
2. 在中根序序列中找到該元素,確定根結點的左右子樹的中根序序列;
3. 在前根序序列中確定左右子樹的前根序序列;
4. 由左子樹的前根序序列和中根序序列建立左子樹;
5. 由右子樹的前根序序列和中根序序列建立右子樹。
已知一棵二叉樹的後根序序列和中根序序列,構造該二叉樹的過程如下:
1. 根據後根序序列的最後乙個元素建立根結點;
2. 在中根序序列中找到該元素,確定根結點的左右子樹的中根序序列;
3. 在後根序序列中確定左右子樹的後根序序列;
4. 由左子樹的後根序序列和中根序序列建立左子樹;
5. 由右子樹的後根序序列和中根序序列建立右子樹。
根據前根序和中根序列印後根序**:
[cpp]
view plain
copy
#include "stdafx.h"
#include
#include
char
prearray =
"abdhecfg"
; char
midarray =
"hdbeafcg"
; typedef
struct
binarytree bitree;
struct
binarytree
; void
createbtree(bitree **node,
intmid_header,
intmid_tail,
intpre_header,
intpre_tail)
else
} void
showbtree(bitree* p)
} int_tmain(
intargc, _tchar* argv)
二叉樹前序,中序,後序遍歷詳解
只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...
二叉樹前序,中序,後序遍歷詳解
只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...
二叉樹 前序遍歷 中序遍歷 後序遍歷
前序遍歷 dlr 是二叉樹遍歷的一種,也叫做先跟遍歷,先序遍歷,前序周遊,可記做根左右。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。前序遍歷首先訪問根節點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根節點,然後遍歷左子樹,最後遍歷右子樹。若二叉樹為空則結束返回,否則 1 ...