LeetCode P144 Binary Tree Preorder Traversal
来源:互联网 发布:keras tensorflow 编辑:程序博客网 时间:2024/06/03 18:12
Given a binary tree, return the preorder traversal of its nodes’ values.
For example:
Given binary tree{1,#,2,3}
,1 \ 2 / 3return
[1,2,3]
.Note: Recursive solution is trivial, could you do it iteratively?
题目大意:给定一个二叉树。返回它的前序遍历序列。要求使用迭代而不是递归。
思路:使用LIFO的数据结构“栈”来模仿前序遍历的过程。前序遍历顺序为:根->左孩子->右孩子。从栈中弹出节点,若以当前节点为根,则记录根节点的值,然后将它的左右孩子放入栈中以便后面读取。前序遍历先左后右,栈是先进后出,因此先将右孩子放入栈中,再把左孩子放入栈中。重复执行该操作直到栈为空。
Java代码:
import java.util.ArrayList;import java.util.List;import java.util.Stack;class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }} public class Solution { public List<Integer> preorderTraversal(TreeNode root) { //使用栈暂存还未确定顺序的节点 Stack<TreeNode> preorderStack = new Stack<TreeNode>(); List<Integer>preorderNum = new ArrayList<Integer>(); if (root == null) {return preorderNum;} preorderStack.push(root); TreeNode tmpNode; while (!preorderStack.empty()) { //弹出当前节点tmpNode = preorderStack.pop();preorderNum.add(tmpNode.val);//先放右孩子,再放左孩子if (tmpNode.right != null) {preorderStack.push(tmpNode.right);}if (tmpNode.left != null) {preorderStack.push(tmpNode.left);}} return preorderNum; }}
0 0
- LeetCode P144 Binary Tree Preorder Traversal
- LeetCode Binary Tree Preorder Traversal
- 【LeetCode】Binary Tree Preorder Traversal
- Leetcode: Binary Tree Preorder Traversal
- Leetcode Binary Tree Preorder Traversal
- LeetCode:Binary Tree Preorder Traversal
- Leetcode: Binary Tree Preorder Traversal
- LeetCode:Binary Tree Preorder Traversal
- [LeetCode]Binary Tree Preorder Traversal
- [LeetCode] Binary Tree Preorder Traversal
- LeetCode | Binary Tree Preorder Traversal
- Leetcode: Binary Tree Preorder Traversal
- [LeetCode] Binary Tree Preorder Traversal
- LeetCode - Binary Tree Preorder Traversal
- LeetCode - Binary Tree Preorder Traversal
- 【LeetCode】Binary Tree Preorder Traversal
- [LeetCode]Binary Tree Preorder Traversal
- Binary Tree Preorder Traversal - LeetCode
- srand与rand随机数生成
- Could not execute JDBC batch update : java.sql.BatchUpdateException: ORA-00926: 缺失 VALUES 关键字
- http协议head详解
- 欢迎使用CSDN-markdown编辑器
- 1028. List Sorting (25)
- LeetCode P144 Binary Tree Preorder Traversal
- visual studio开启多核编译方法
- Error:ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking support requires these orientations:
- 1059: [ZJOI2007]矩阵游戏
- 一篇介绍NStimer深层原理的文章
- leetcode Rotate Array
- JAVA基础——新概念理解
- ogg initial load初始化加载
- PHP 连接 oracle数据库(可远程)的测试操作