二叉樹的建立與DFS遍歷

2021-07-30 17:37:50 字數 733 閱讀 4735

二叉樹具有如下性質:

二叉樹的建立:

根據二叉樹性質,其具有子結構模式,所以可以用遞迴辦法來建立。

1.使用結構體+指標的方式建立

2.用陣列建立

結構體加指標用了動態申請空間的辦法,但是這樣很容易導致指標的丟失而出現記憶體洩漏——意味著有些記憶體被浪費。使用陣列的方法本質上是一樣的,首先開三個陣列:

data[maxn];//存放所有節點資料

left

[maxn];//存放左孩子資料

right

[maxn];//存放右孩子資料

上面的陣列用下標關聯如:left[x]表示data[x]的左孩子,right[x]表示其右孩子,而x實際上就是指標替代品

這裡舉例在得知中序遍歷(in_order)和後序遍歷(post_order)建立二叉樹

//建立二叉樹,傳入引數有4個,兩組範圍

int build(int l1,int r1,int l2,int r2)

二叉樹的遍歷有三種順序:

在遞迴的方法下計算節點和,採用中序遍歷:

//傳入root節點

void dfs(int u,int

sum)

二叉樹的建立與遍歷 二叉樹遍歷模板)

初學二叉樹,感覺之前鍊錶掌握不熟練導致接受有點難,現在做一些總結。本題其實就是根據給出的前序遍歷 包括空子樹 寫出相應的前序 中序和後序遍歷。廢話不多說,先看看題目 description 下面給出了教材中演算法6.4所示的演算法。status createbitree bitree t retur...

二叉樹的dfs遍歷

bt均為樹的根節點,建立好樹的時候返回的是根節點,類似煉表頭指標 先序遍歷 function preorder bt console.log bt.data preorder bt.left preorder bt.right 中序遍歷 function inorder bt inorder bt....

二叉樹建立與遍歷

二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱為 左子樹 和 右子樹 二叉樹的每個節點最多只能右兩棵子樹,子樹有左右之分,次序不能顛倒。除了葉結點外每乙個結點都有左右子葉且葉子結點都處在最底層的二叉樹。假設二叉樹的高度為k,除第k層外,其他各層的節點數都達到最大個數。也就是第一層到第k 1層為...