二叉树非递归先序遍历
来源:互联网 发布:淘宝上的伟哥药能买吗 编辑:程序博客网 时间:2024/05/19 14:37
二叉树先序遍历比较容易实现,以下图为例,首先设置一个栈结构,如果栈不空,或者当前节点不为null,则循环继续:
1、如果当前节点不为null,则沿该节点一直往左走,直到该节点的最左子节点,在寻找的过程中不断访问节点(先序),如A -> B -> D;
2、如果当前节点为null,但是栈不空,则出栈,因为出栈后的节点,和其左子树均已被访问,所以接下来找其右子树。
Java实现的先序遍历代码如下,主要是preorderTraversal方法:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution {ArrayList<Integer> list = new ArrayList<Integer>();Stack<TreeNode> stack = new Stack<TreeNode>(); public List<Integer> preorderTraversal(TreeNode root) { if(root==null){ return list; } TreeNode temp = null; while(!stack.isEmpty() || root!=null){ while(root != null){ list.add(root.val); stack.push(root); root = root.left; } temp = stack.pop(); System.out.println(temp.val); root = temp.right; } return list; } // public static void main(String[] args) {//TreeNode root = TreeNode.getInstance();//Solution s = new Solution();//System.out.println(s.preorderTraversal(root));//}}
0 0
- 非递归先序遍历二叉树
- 非递归先序遍历二叉树
- 先序遍历二叉树 [非递归]
- 非递归先序遍历二叉树
- 二叉树非递归先序遍历
- 二叉树非递归先序遍历
- 非递归先序遍历二叉树
- 二叉树的先序递归以及非递归遍历
- 二叉树的先序递归,非递归遍历
- C++ 二叉树的遍历---先序遍历(非递归)
- 二叉树的先序遍历(非递归算法)
- 如何实现二叉树的非递归先序遍历
- 【二叉树遍历】先序---非递归实现
- 二叉树的先序遍历非递归实现方法
- 数据结构之 非递归方法先序遍历二叉树
- 二叉树的先序遍历(非递归算法)
- 带栈的二叉树非递归先序遍历
- 先序遍历二叉树的非递归方法
- ubuntu12.04中输入法安装
- 数据库查询语句
- 第五周项目:对象作为数据成员
- 高效能程序员的修炼
- SVN权限配置
- 二叉树非递归先序遍历
- 第五周(时间表)
- Ajax轮询
- eclipse插件spket调试extjs
- Selenium – How to handle WAIT
- 校验
- haar-like特征
- 幸福感
- 最常用的Eclipse快捷键