遍歷二叉樹

2021-10-21 12:05:38 字數 1548 閱讀 8448

利用先序、中序、後序、層次遍歷二叉樹

#include

#include

using

namespace std;

#define maxsize 1024

typedef

struct node btnode;

//struct node 的別名

typedef

struct quene sqqueue;

//struct queue 的別名

//初始化佇列

void

initqueue

(sqqueue*

& q)

//判斷佇列是否為空

bool

emptyqueue

(sqqueue*

& q)

else

}//進佇列

bool

enqueue

(sqqueue*

& q, btnode*

& bt)

q->rear++

;//頭指標加 1

q->data[q-

>rear]

= bt;

//傳值

return

true

;//返回真

}//出佇列

bool

dequeue

(sqqueue*

& q, btnode*

& bt)

q->front++

;//尾指標加 1

bt = q-

>data[q-

>front]

;//取值

return

true

;//返回真

}//建立二叉樹

intcreatebtnode

(btnode*

& bt,

char

* str,

int n)

else

}return n;

//返回 n,記錄字串使用到**了

}//先序遍歷

void

preorder

(btnode*

& bt)

}//中序遍歷

void

inorder

(btnode*

& bt)

}//後序遍歷

void

postorder

(btnode*

& bt)

}//層次遍歷

void

levelorder

(btnode*

& bt)

while

(emptyqueue

(q)!=

true)if

(bt-

>rchild !=

null

)//一層一層的把節點存入佇列

}//當沒有孩子節點時就不再迴圈

}int

main()

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹遍歷

二叉樹的遍歷非常重要,但對已一棵比較複雜的樹,要寫出它的先 中 後序遍歷,往往不是那麼簡單,也很容易犯錯。這裡介紹一種比較直觀且不容易犯錯的方法。對於圖1所示的二叉樹,要寫出它的先 中 後序遍歷,往往很容易出錯。圖 1 其實,我們可以用圖2中的紅線描畫出二叉樹的輪廓。圖 2 而對於樹上的每乙個節點,...

二叉樹遍歷

描述 華為實習生招聘,有一道類似如下的題目 給出二叉樹,如圖1所示 圖 1 二叉樹 要求給出中序遍歷的結果。下面分別就前序遍歷 中序遍歷 後序遍歷進行分析。規律 前序遍歷 根在前 子樹在根後且左子樹比右子樹靠前 中序遍歷 根在中 左子樹在根左邊,右子樹在根右邊 後序遍歷 根在後 子樹在根前且左子樹比...