二叉樹的中序遍歷,遞迴實現和非遞迴實現(C 實現)

2021-09-22 01:56:58 字數 2188 閱讀 3653

部落格中**都經過執行並且沒有bug

二叉鍊錶資料結構和二叉鍊錶的構造

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 樹

/// /// 構造二叉樹

///

///

public static bitnode initbitree()

;bitnode bitnodeb = new bitnode() ;

bitnode bitnodec = new bitnode() ;

bitnode bitnoded = new bitnode() ;

bitnode bitnodee = new bitnode() ;

bitnode bitnodef = new bitnode() ;

bitnode bitnodeg = new bitnode() ;

bitnode bitnodeh = new bitnode() ;

bitnode bitnodek = new bitnode() ;

bitnodea.lchild = bitnodeb;

bitnodea.rchild = bitnodee;

bitnodeb.lchild = null;

bitnodeb.rchild = bitnodec;

bitnodec.lchild = bitnoded;

bitnodec.rchild = null;

bitnoded.lchild = null;

bitnoded.rchild = null;

bitnodee.lchild = null;

bitnodee.rchild = bitnodef;

bitnodef.lchild = bitnodeg;

bitnodef.rchild = null;

bitnodeg.lchild = bitnodeh;

bitnodeg.rchild = bitnodek;

bitnodeh.lchild = null;

bitnodeh.rchild = null;

bitnodek.lchild = null;

bitnodek.rchild = null;

return bitnodea;

}}}

遞迴實現中序遍歷

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 樹

if (t != null)

if (t.rchild != null)

}}}

非遞迴實現中序遍歷

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 樹

else if (stack.count > 0)//棧不空時退棧

else}}

public static 二叉鍊錶.bitnode gofarleft(二叉鍊錶.bitnode t, stack《二叉鍊錶.bitnode> s)

while (t.lchild != null)

return t;

}}}

//執行二叉樹遍歷演算法

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace 樹

}}

二叉樹中序遍歷的非遞迴實現

按照二叉樹中序遍歷的定義,無論是訪問整課樹還是其子樹,均應該遵循先訪問根節點的左子樹,然後訪問根節點,最後訪問根節點的右子樹的規律。因為對於一棵樹t,如果t非空,首先應該進入t的左子樹訪問,此時由於t的根節點及右子樹尚未訪問,因此必須將t儲存起來,放入棧中,以便訪問完其左子樹後,從棧中取出t,進行其...

二叉樹中序非遞迴遍歷

definition for a binary tree node.struct treenode class solution else return out 中序非遞迴遍歷de演算法思想 根據中序遍歷的順序,對於任意乙個結點,優先訪問左孩子,再繼續訪問該左孩子的左孩子,然直到遇到左孩子結點為空的...

二叉樹的遍歷 前序非遞迴和中序非遞迴

詳情可以見文章二叉樹建立和遞迴遍歷 建立如圖的二叉樹 就可以建立好上圖的二叉樹 非遞迴遍歷的演算法如下 include include using namespace std typedef char datatype 二叉樹的左右鏈表示,也叫做二叉鍊錶表示 typedef struct node ...