TreeNode node = stack.pop(); System.out.println("非递归前序遍历节点:" + node.data); if (node.rightChild != null) { stack.push(node.rightChild); } if (node.leftChild != null) { stack.push(node.leftChild); } // 继续拿出元素进行遍历,这时拿的应该是左边的 } } 1. 2. 3. 4. ...
规定二叉树的根节点为第 00 层,如果当前层数是偶数,从左至右输出当前层的节点值,否则,从右至左输出当前层的节点值。 我们依然可以沿用第 102 题的思想,修改广度优先搜索,对树进行逐层遍历,用队列维护当前层的所有元素,当队列不为空的时候,求得当前队列的长度 size,每次从队列中取出 size 个元素进行拓展,然后...
二叉树的层次遍历(Java代码实现) 与树的前中后序遍历的DFS思想不同,层次遍历用到的是BFS思想。一般DFS用递归去实现(也可以用栈实现),BFS需要用队列去实现。 层次遍历的步骤是: 1.对于不为空的结点,先把该结点加入到队列中 2.从队中拿出结点,如果该结点的左右结点不为空,就分别把左右结点加入到队列中 3.重...
public void inOrder(BinaryNode t)//中序遍历二叉树
直接上代码呵呵,里面有注解 packagewww.com.leetcode.specificProblem;importjava.util.ArrayList;importjava.util.List;importjava.util.Stack;/*** 总结了三种非递归遍历二叉树 *@author85060 **/publicclassTraverseBinaryTree {//用来装遍历序列的一个list,展示的时候用privateList<TreeNode> helpList =newArrayList...