LeetCode144 Binary Tree Preorder Traversal(迭代实现) Java
2016-04-23 13:14
465 查看
题目:
Given a binary tree, return the preorder traversal of its nodes’ values.
For example:
Given binary tree {1,#,2,3},
return [1,2,3].
Note: Recursive solution is trivial, could you do it iteratively?
分析:
先根遍历二叉树,就是说,对二叉树中的每一个节点,先访问该节点,再访问其左子树,最后访问其右子树。用迭代的方式先根遍历二叉树,需要借助栈。具体步骤如下:
(1)将根结点入栈
(2)进入循环。先弹出栈顶元素,访问它,然后将该元素的右子树入栈,最后将该元素的左子树入栈。左子树后于右子树入栈保证了左子树先于右子树被访问。
代码:
Given a binary tree, return the preorder traversal of its nodes’ values.
For example:
Given binary tree {1,#,2,3},
1 \ 2 / 3
return [1,2,3].
Note: Recursive solution is trivial, could you do it iteratively?
分析:
先根遍历二叉树,就是说,对二叉树中的每一个节点,先访问该节点,再访问其左子树,最后访问其右子树。用迭代的方式先根遍历二叉树,需要借助栈。具体步骤如下:
(1)将根结点入栈
(2)进入循环。先弹出栈顶元素,访问它,然后将该元素的右子树入栈,最后将该元素的左子树入栈。左子树后于右子树入栈保证了左子树先于右子树被访问。
代码:
package global; public class TreeNode { public int val; public TreeNode left; public TreeNode right; public TreeNode(int x) { val = x; } @Override public String toString() { return "TreeNode [val=" + val + ", left=" + left + ", right=" + right + "]"; } }
package leetcode144; import global.TreeNode; import java.util.LinkedList; import java.util.List; /** * 先根遍历树的规则是这样的:对于遇到的每一个节点,先访问节点本身,然后是左子树根节点。 * @author liyuncong * */ public class LeetCode144 { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new LinkedList<Integer>(); if (root == null) { return result; } LinkedList<TreeNode> stack = new LinkedList<TreeNode>(); stack.push(root); while (!stack.isEmpty()) { TreeNode top = stack.pop(); if (top != null) { result.add(top.val); stack.push(top.right); stack.push(top.left); } } return result; } }
相关文章推荐
- 通过字节码分析JDK8中Lambda表达式编译及执行机制
- Java千百问_05面向对象(011)_引用传递和值传递有什么区别
- JSTL(c标签)与Struts2(s标签)标签的常用功能对比
- SpringMVC -- 拦截器技术1 (6)
- Java的数据类型转换
- JAVA接口的简单实现
- Java九九乘法表/冒泡排序倒叙输出
- The Java™ Tutorials
- spring多数据源配置
- java中的集合类
- 《day16_多线程细节_Eclipse使用》
- eclipse中 将java项目转换为web项目
- Java web:SSH项目拷贝产生问题以及解决(getContextPath() xml hibernate等报错)
- Myeclipse10.x破解方法
- java基础算法学习之分治
- Struts中type="chain"的用法!
- 20145313张雪纯 《Java程序设计》8周学习总结
- 学习Java的第一个程序
- myEclipse/eclipse中properties文件中文乱码问题解决方案
- 20145106 《Java程序设计》第8周学习总结