C語言二叉樹的非遞迴遍歷

2021-09-11 09:45:59 字數 926 閱讀 4373

#include

#include

using

namespace std;

/* 1、將根節點 壓入棧中

2、只要 棧size> 0 執行迴圈

2.1 拿出棧頂元素

2.2 如果棧頂元素的標誌位 真 直接輸出 執行下一次迴圈

2.3 如果不是真 該flag的標誌位真

2.4 將 右子節點 和 左子節點 和 根 入棧

2.5 執行下一次迴圈

*/typedef

struct binarytree binarytrees;

void

pre_trial

(binarytrees *p_node)

else}}

intmain()

; binarytrees n2 =

; binarytrees n3 =

; binarytrees n4 =

; binarytrees n5 =

; binarytrees n6 =

; binarytrees n7 =

; binarytrees n8 =

; n1.left =

&n2;

n1.right =

&n3;

n2.left =

&n4;

n2.right =

&n5;

n3.left =

&n6;

n3.right =

&n7;

n4.left =

&n8;

pre_trial

(&n1)

;system

("pause");

return0;

}

二叉樹非遞迴遍歷(c語言)

結果如下圖 號代表null,此時沒有節點 一 在c語言中進行二叉樹的非遞迴遍歷需要用到棧,而在c語言中沒有直接呼叫棧的介面,所以在實現非遞迴遍歷時需要先實現乙個棧,需要用到出棧,入棧,棧頂元素,判斷棧是否為空,這四個介面,別的可以不用實現。二 實現棧的介面 注意 這裡棧的陣列需要用到的型別時node...

二叉樹的非遞迴遍歷 C語言

先序遍歷思想如下 步驟1 若當前結點有右子樹,則將右子樹結點壓入棧,輸出當前節點並指標往下走指向該節點的左子樹。步驟2 若左子樹為空,則遍歷右子樹,重複步驟1,若右子樹為空,彈棧輸出指標指向該結點。中序遍歷思想如下 步驟1 若當前結點有左子樹,則將當前結點壓入棧,指標往下走指向該節點的左子樹 相當於...

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...