/**
* 二叉树节点
*/
private static class TreeNode {
int data;
TreeNode leftchild;
TreeNode rightchild;
TreeNode(int data) {
this.data = data;
}
}
/**
* 二叉树非递归前序遍历
*
* @param node 二叉树节点
*/
public static void preOrderTraveral(TreeNode node) {
Stack<TreeNode> stack = new Stack<>();
while (node != null || !stack.isEmpty()) {
//迭代访问节点的左孩子,并入栈
System.out.println(node.data);
stack.push(node);
//如果节点没有左孩子,则弹出栈顶节点,访问节点右孩子
if (!stack.isEmpty()) {
node = stack.pop();
node = node.rightchild;
}
}
}
本文深入探讨了二叉树的非递归前序遍历算法,通过使用栈数据结构来实现对二叉树节点的访问,避免了传统递归方法可能引起的堆栈溢出问题。文章详细解释了算法的执行流程,包括节点的左孩子迭代访问与入栈操作,以及在无左孩子时弹出栈顶节点并访问其右孩子。
830

被折叠的 条评论
为什么被折叠?



