二叉樹的前中後序遍歷(遞迴與非遞迴)

2021-09-24 23:35:45 字數 1403 閱讀 2046

/**

* bst樹的節點型別

* @param */

class bstnode >

public t getdata()

public void setdata(t data)

public bstnodegetleft()

public void setleft(bstnodeleft)

public bstnodegetright()

public void setright(bstnoderight)

}/**

* bst樹的實現

* @param */

class bst>

/*** 二叉樹的前序遍歷(非遞迴)

*/public void perorder()

if (!stack.isempty())}}

/*** 前序遞迴實現

*/public void perorderre()

private void perorderre(bstnoderoot)

system.out.print(root.getdata()+" ");

perorderre(root.getleft());

perorderre(root.getright());

}/**

* 二叉樹的中序遍歷(非遞迴)

*/public void midorder()

if (!stack.isempty())}}

/*** 中序遍歷的遞迴實現

*/public void midorderre()

private void midorderre(bstnoderoot)

midorderre(root.getleft());

system.out.print(root.getdata()+" ");

midorderre(root.getright());

}/**

* 二叉樹的後序遍歷(非遞迴)

*/public void postorder()

while (!stack1.empty() && stack2.peek()==right)

if (!stack1.empty()&&stack2.peek()==left)}}

/*** 二叉樹的後續遍歷 遞迴法

*/public void postorderre()

private void postorderre(bstnoderoot)

postorderre(root.getleft());

postorderre(root.getright());

system.out.print(root.getdata()+" ");

}}

非遞迴前,中,後序遍歷二叉樹

相比遞迴遍歷二叉樹,非遞迴遍歷二叉樹稍難一些,而又數非遞迴後序遍歷二叉樹更難。在我通過與這段時間所學資料結構相結合,學習和了解了非遞迴遍歷二叉樹的方法,這裡三種遍歷方式都會用到棧,利用棧的逐層壓棧與先進後出的特點,類似於用 實現了遞迴遍歷二叉樹的基本方法。非遞迴二叉樹的遍歷個人認為注重的是思想,實現...

二叉樹的前 中 後序遍歷(遞迴與非遞迴)

常見的二叉樹的遍歷有三種方式 前序遍歷 根節點,左子樹,右子樹 中序遍歷 左子樹,根節點,右子樹 後序遍歷 左子樹,右子樹,根節點 每種方式都可以用遞迴和非遞迴來實現 一 遞迴遍歷 1.先序遍歷 先訪問根節點,再訪問左子樹,左子樹訪問完之後,訪問右子樹 void btreeprevorder btn...

二叉樹的前中後序遍歷(遞迴 非遞迴)

二叉樹節點類 author wj class treenode 二叉樹類 author wj class binarytree private void add node to tree int value 建立二叉樹 treenode currentnode treenode while true...