Leetcode: Binary Tree Preorder Traversal
来源:互联网 发布:扫描仪软件怎么使用 编辑:程序博客网 时间:2024/06/16 19:47
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?
Solution with recursion:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> res = new ArrayList<Integer>(); tranverse(root, res); return res; } private void tranverse(TreeNode root, ArrayList<Integer> res) { if (root == null) { return; } res.add(root.val); tranverse(root.left, res); tranverse(root.right, res); }}
Solution without recursion: Use stack to store nodes, with right node coming before left node, so that left node can be taken out earlier than right node.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public ArrayList<Integer> preorderTraversal(TreeNode root) { ArrayList<Integer> res = new ArrayList<Integer>(); if (root == null) { return res; } Stack<TreeNode> stack = new Stack<TreeNode>(); stack.push(root); while(!stack.empty()) { TreeNode node = stack.pop(); res.add(node.val); if (node.right != null) { stack.push(node.right); } if (node.left != null) { stack.push(node.left); } } return res; }}
0 0
- 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
- [Leetcode] Binary Tree Preorder Traversal
- fastdfs+nginx安装详解
- 自定义的加载中弹出框,重写ProgessDialog
- stwtt
- 一次jvm调优线上环境实战
- 集合部分:ArrayList集合添加元素,并遍历元素
- Leetcode: Binary Tree Preorder Traversal
- sfdgywesyuii8756asrtytuu
- JDBC三种连接方式
- Linux 网络栈剖析 -- 从 socket 到设备驱动程序
- 可滑动控件(ListView,WebView,ScrollView)实现弹性滑动或者取消弹性滑动(上下或左右滑动)
- sevelet 过滤器 filter
- C语言getchar()函数与putchar()函数
- Java基础:输入输出流
- waesrdytfyuiop[yu68iuytre