二叉树的先序遍历BTPreorderTraversal
来源:互联网 发布:剑三五毒捏脸数据 编辑:程序博客网 时间:2024/06/03 21:41
public class BTPreorderTraversal
{
//节点数据结构
static class TreeNode
{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x)
{
val = x;
}
}
public static ArrayList<Integer> preorderTraversal(TreeNode root)
{
if(null == root)
{
return null;
}
ArrayList<Integer> _values = new ArrayList<Integer>();
Deque<TreeNode> _nodes = new ArrayDeque<TreeNode>();
TreeNode _p = root;
//从根节点开始,依次把左节点入栈并取值,若其左节点为空,把该节点出栈(已经被访问过),再访问其右节点,重复该过程
while(null != _p || !_nodes.isEmpty())
{
if(null != _p)
{
_values.add(_p.val);
_nodes.push(_p);
_p = _p.left;
}
else
{
_p = _nodes.peek();
_nodes.pop();
_p = _p.right;
}
}
return _values;
}
}
{
//节点数据结构
static class TreeNode
{
int val;
TreeNode left;
TreeNode right;
TreeNode(int x)
{
val = x;
}
}
public static ArrayList<Integer> preorderTraversal(TreeNode root)
{
if(null == root)
{
return null;
}
ArrayList<Integer> _values = new ArrayList<Integer>();
Deque<TreeNode> _nodes = new ArrayDeque<TreeNode>();
TreeNode _p = root;
//从根节点开始,依次把左节点入栈并取值,若其左节点为空,把该节点出栈(已经被访问过),再访问其右节点,重复该过程
while(null != _p || !_nodes.isEmpty())
{
if(null != _p)
{
_values.add(_p.val);
_nodes.push(_p);
_p = _p.left;
}
else
{
_p = _nodes.peek();
_nodes.pop();
_p = _p.right;
}
}
return _values;
}
}
阅读全文
0 0
- 二叉树的先序遍历BTPreorderTraversal
- 二叉树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- C++二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- 求二叉树的先序遍历
- NUC1372 Bull Math【大数】
- HashMap既然继承了AbstractMap为什么还要实现Map
- EXCEL如何做类似省市联动的二级选择菜单?
- 设计模式-Iterator理解
- pat 中求解最长回文串的长度
- 二叉树的先序遍历BTPreorderTraversal
- simCard 学习总结
- JavaScript 心灵鸡汤
- Leetcode 79 Word Search
- 2017.06.20
- 安装TensorFlow
- OC代码编译,链接,执行过程 02
- TCP网络编程中的listen
- Climbing Stairs