c 二叉樹的建立 前中後序遍歷 以及遇到的坑

2021-10-05 22:06:18 字數 1810 閱讀 8383

參考:

1、資料結構**解析之:樹的簡介及二叉排序樹c++模板實現.

2、c語言建立二叉樹過程中遇到的一些問題

//二叉樹的節點的結構

struct treenode

;

//傳遞節點指標的指標!!!重要

void

createtree

(treenode*

& everytreenode)

else

}

void

createtree

(treenode* everytreenode)

這裡傳遞的引數是樹節點的指標,傳遞這個引數時相當於傳遞了變數的形參,你對 *everytreenode 的操作不影響你的目標 tree 的值。

正確**:

void

createtree

(treenode*

& everytreenode)

參考:二叉樹為什麼用二級指標來構造的原因

//遍歷順序:根左右

void

preorder

(treenode* everytreenode)

}//遍歷順序:左根右

void

inoder

(treenode* everytreenode)

}//遍歷順序:左右根

void

postorder

(treenode* everytreenode)

}

二叉樹的遞迴遍歷比較簡單,關鍵就是把節點和它的孩子看做整體

1、先輸出節點的值在輸出左右孩子的值就是先序

2、先輸出左孩子的值,再輸出節點的值,最後輸出右孩子的值就是後序

3、先輸出左右孩子的值在輸出節點的值就是後序

二叉樹的建立本質上還是指標的應用,只要理解了指標、結構體,二叉樹的資料結構也不難理解。

至於遇到了傳遞樹節點形參的坑,說明我對指標這部分內容了解的還不是特別透徹,對二級指標更是沒有概念,還是得好好學。

最後發個原始碼:

#include

using

namespace std;

//二叉樹的節點的結構

struct treenode

;//全域性變數 方便檢視傳遞的是形參還是實參

treenode* tree =

new treenode;

//傳遞節點指標的指標!!!重要

void

createtree

(treenode*

& everytreenode)

else

}//遍歷順序:根左右

void

preorder

(treenode* everytreenode)

}//遍歷順序:左根右

void

inoder

(treenode* everytreenode)

}//遍歷順序:左右根

二叉樹的前中後序遍歷

秋招記錄 對一棵二叉樹進行遍歷,我們可以採取3種順序進行遍歷,分別是前序遍歷 中序遍歷和後序遍歷。這三種方式是以訪問父節點的順序來進行命名的。假設父節點是n,左節點是l,右節點是r,那麼對應的訪問遍歷順序如下 前序遍歷 中左右 n l r 中序遍歷 左中右 l n r 後序遍歷 左右中 l r n ...

二叉樹的前 中 後序遍歷

import lombok.data import lombok.noargsconstructor data noargsconstructor class treenode 前序遍歷 根 左 右 public void preorder 遞迴向右子樹前序遍歷if this right null ...

二叉樹的前 中 後序遍歷

前序 根左右 中序 左根右 後序 左右根 前序遍歷 124563 中序遍歷 546213 後序遍歷 564231 package datastructure public class binarytreedemo class binarytree public binarytree hero roo...