您的位置:首页 > 理论基础 > 数据结构算法

数据结构:那些关于二叉树遍历的故事--Java实现

2014-03-17 16:09 615 查看
二叉树的先序遍历

//前序遍历
public List<TreeNode> preIterator()
{
return preIterator( root );
}

private List<TreeNode> preIterator( TreeNode node )
{
List<TreeNode> list = new ArrayList<TreeNode> ();
list.add( node );

if( node.left != null )
{
list.addAll( preIterator( node.left ));
}
if( node.right != null )
{
list.addAll( pareIterator( node.right ));
}
return list;
}


二叉树的中序遍历

//中序遍历
public List<TreeNode> midIterator()
{
return preIterator( root );
}

private List<TreeNode> midIterator( TreeNode node )
{
List<TreeNode> list = new ArrayList<TreeNode> ();

if( node.left != null )
{
list.addAll( midIterator( node.left ));
}
list.add( node );
if( node.right != null )
{
list.addAll( midIterator( node.right ));
}
return list;
}


二叉树的后序遍历

//后序遍历
public List<TreeNode> postIterator()
{
return preIterator( root );
}

private List<TreeNode> postIterator( TreeNode node )
{
List<TreeNode> list = new ArrayList<TreeNode> ();

if( node.left != null )
{
list.addAll( postIterator( node.left ));
}

if( node.right != null )
{
list.addAll( postIterator( node.right ));
}
list.add( node );
return list;
}


二叉树的层次遍历

//层次遍历
public List<TreeNode> traverseIterator()
{
Queue<TreeNode> queue = new ArrayDeque<TreeNode>();
List<TreeNode>   list = new ArrayList<TreeNode> () ;

if( root != null )
{
queue.offer( root );
}
while( !queue.isEmpty() )
{
list.add( queue.peek() );
TreeNode p = queue.poll();

if( p.left != null )
{
queue.offer( p.left );
}
if( p.right != null )
{
queue.offer( p.right );
}
}
return list;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: