二叉樹的遍歷和重建

2021-10-19 23:06:45 字數 1003 閱讀 3823

前序遍歷(preorder tree walk):按照根節點、左子樹、右子樹的順序輸出結點編號

中序遍歷(inorder tree walk):按照左子樹、根節點、右子樹的順序輸出結點編號

後序遍歷(postorder tree walk):按照左子樹、右子樹、根節點的順序輸出結點編號

按照id left right,id為結點編號,left為左子結點編號,right為右子結點編號,不存在子結點為-1,分別輸出三種遍歷結果

二叉樹遍歷會對樹的每個結點進行一次訪問,因此演算法複雜度為o(n),但使用遞迴實現遍歷演算法時要注意,一旦樹的結點數量龐大且分布不均,很可能導致遞迴深度過深

#include#include#includeusing namespace std;

#define nil -1

#define max 10000

struct node

;struct node t[max];

int n;

//前序遍歷

void preparse(int u)

//中序遍歷

void inparse(int u)

//後序遍歷

重建二叉樹與二叉樹的層次遍歷

time limit 1000ms memory limit 65536k 有疑問?點這裡 已知一棵二叉樹的前序遍歷和中序遍歷,求二叉樹的後序遍歷。輸入資料有多組,第一行是乙個整數t t 1000 代表有t組測試資料。每組包括兩個長度小於50 的字串,第乙個字串表示二叉樹的先序遍歷序列,第二個字串表...

二叉樹 由前序遍歷和中序遍歷重建二叉樹

由前序遍歷和中序遍歷重建二叉樹 前序序列 1 2 3 4 5 6 中序序列 3 2 4 1 6 5 思路 前序遍歷第乙個是根節點。中序遍歷根節點左側為左子樹,根右側為右子樹。那麼先構造根節點,根節點左側都為左子樹,根右側都為右子樹。然後對左右子樹遞迴式的構造即可。封裝 binarytreenode ...

已知二叉樹的後序遍歷和中序遍歷重建二叉樹 二叉樹

由中序遍歷和後序遍歷重建二叉樹 中序遍歷中,根節點總是位於左右子樹中間,將左右子樹分開。後序遍歷中,根節點總是在左右子樹之後。重建演算法 現在說一下重建根節點的過程,其他節點可以遞迴建立。由後序遍歷定義可知,後序遍歷序列的最後乙個元素必定是整個樹的根節點,這樣就確定了根節點。由中序遍歷定義可知,在中...