二叉树先序、中序、后序、层次遍历递归以及非递归算法实现
最近写了一下关于二叉树的三种遍历算法的递归以及非递归实现,以及层次遍历算法实现 先序遍历递归实现 /** * 先序遍历,根》左》右 */ public void beforeTraverse ( TreeNode root ) { if ( root == null ) { return ; } System . out . print ( root . val + "->" ) ; if ( root . left != null ) { beforeTraverse ( root . left ) ; } if ( root . right != null ) { beforeTraverse ( root . right ) ; } } 先序遍历非递归实现 /** * 通过栈遍历二叉树,先序(思想就是:入栈即记录) */ public List < String > beforeTraverseByStack ( TreeNode root ) { List < String > list = new ArrayList < > ( ) ; // 接受结果 if ( root == null ) { return list ; } Stack < TreeNode > stack = new Stack < > ( ) ; // 先序遍历(根 》左 》右),先遍历所有左结点