二叉樹的先序遍歷BTPreorderTraversal
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;
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.