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

2021-08-28 21:24:37 字數 1927 閱讀 1653

/**

* 二叉樹節點類

* @author wj

* */

class treenode

}/**

* 二叉樹類

* @author wj

* */

class binarytree

} private void add_node_to_tree(int value)

/*** 建立二叉樹

*/treenode currentnode = treenode;

while(true) else

}elseelse

}} }

/*** 中序遍歷

* @param node

*/public static void inorder(treenode node) }

/*** 前序遍歷

* @param args

*/public static void perorder(treenode node)

} /**

* 後序遍歷

*/public static void postorder(treenode node)

} /**

* 非遞迴先序遍歷

* @param node

*/public static void newperorder(treenode head)

stackstack = new stack<>();

stack.add(head);

while(!stack.empty())

if(head.left_node != null)

} } /**

* 非遞迴中序遍歷

* @param node

*/public static void newinorder(treenode head)

stackstack = new stack<>();

while(!stack.empty() || head!= null) else

}} /**

* 非遞迴後序遍歷

* @param node

*/public static void newpostorder(treenode head)

stackstack = new stack<>();

stackstack1 = new stack<>();

stack.add(head);

while(!stack.empty())

if(head.right_node != null)

} while(!stack1.empty()) }}

public class test2 ;

binarytree binarytree = new binarytree(data);

binarytree.inorder(binarytree.treenode);

system.out.println();

binarytree.perorder(binarytree.treenode);

system.out.println();

binarytree.postorder(binarytree.treenode);

system.out.println();

binarytree.newperorder(binarytree.treenode);

system.out.println();

binarytree.newinorder(binarytree.treenode);

system.out.println();

binarytree.newpostorder(binarytree.treenode);

}}

先序:中 左 右

中序:左 中 右

後序:左 右 中

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

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

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

前序遍歷最簡單,無腦入棧無腦出棧,出棧的時候先入右再入左即可。class solution stack.push root while stack.size 0 if temp.left null return res 中序遍歷比較特殊,要有乙個前驅指標p來一直向左試探,所以條件上多了一項p nul...

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

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