二叉樹的建立與三種遍歷方式

2021-09-29 23:02:05 字數 1257 閱讀 1345

作為鹹魚,這個學期學習了一種極為重要的資料結構:

二叉樹

和之前的線性資料結構比起來,二叉樹是非線性的,擁有多樣的建立和遍歷方式;

剛剛上手的時候,總會覺得有點暈頭轉向;

加之遞迴函式又有些生疏,剛開始學習的時候總是會出現一些莫名其妙的報錯;

那麼先從基礎的開始:

二叉樹的建立與三種遍歷方式

首先是定義二叉樹節點

struct treenode 

;

接下來是最基礎的操作,二叉樹的建立:

遞迴建立,要注意節點的空間申請

struct treenode*

buildtree

(struct treenode* root)

root =

(struct treenode*

)malloc

(sizeof

(struct treenode));

root->val = val;

root->left =

buildtree

(root->left)

;//建立左子樹

root->right =

buildtree

(root->right)

;//建立右子樹

return root;

}

接下來是二叉樹的三種遍歷方式,

雖然先根,中根,後根遍歷的結果在順序上差別相當大;

但其實仔細分析遍歷過程的話,這三種的遞迴遍歷的思路非常接近;

而在**上也僅僅只有微妙的差異:

先根遍歷:

void

scantreepre

(struct treenode *root)

中根遍歷:

void

scantreemid

(struct treenode *root)

後根遍歷:

void

scantreepost

(struct treenode *root)

**非常精簡,思路也很清晰,即使用紙筆也可以很快模擬出遍歷過程

以下是主函式:

int

main()

二叉樹三種遍歷方式

三種遍歷方式是按照根節點的訪問順序來定義的 1 前序遍歷 先訪問根結點 然後遍歷左子樹,最後遍歷右子樹 並且,在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。根左右 2 中序遍歷 先遍歷左子樹 然後訪問根結點,最後遍歷右子樹 並且,在遍歷左 右子樹時,仍然先遍歷左子樹,然後訪問...

Python 二叉樹的建立與三種遍歷方式

建立和遍歷均使用遞迴的方式進行,非常簡潔。建立 自上而下。每個節點處,都先遞迴建立左子樹,直至左子樹為空,再建立右子樹。前序遍歷 每個節點處,先訪問根節點,再訪問左子樹,最後訪問右子樹。中序遍歷 每個節點處,先訪問左子樹,再訪問根節點,最後訪問右子樹。後序遍歷 每個節點處,先訪問左子樹,再訪問右子樹...

重建二叉樹 遍歷二叉樹的三種方式

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。示例 前序遍歷 preorder 3,9,20,15,7 中序遍歷 inorder 9,3,15,20,7 返回如下的二叉樹 3 9 20 15 7限制 0 節點個數 5000 這個題的解法...