标签:
二叉树的遍历方法有多种,首先我想先改变这几个遍历的名字(前根序遍历,中根序遍历,后根序遍历);前中后本来就是相对于根结点来说的,少一个字会产生很多不必要的误解。
先简单描述一下这三种遍历方法的区别:
先序遍历:
递归方式:
1 //前序遍历 2 public void PreOrder(BinaryTreeNode<E> root){ 3 if(root == null) 4 return ; 5 else{ 6 System.out.print(root+" "); 7 PreOrder(root.lchild) ; 8 PreOrder(root.rchild) ; 9 } 11 }
非递归方式:借用栈的结构特点来实现,具体步骤如下:
中序遍历:
递归方式:
1 //中序遍历 2 public void MidOrder(BinaryTreeNode<E> root){ 3 if(root == null) 4 return ; 5 else{ 6 MidOrder(root.lchild) ; 7 System.out.print(root+" "); 8 MidOrder(root.rchild) ; 9 } 10 }
非递归方式:也是借用栈的结构特点来实现,具体步骤如下:
后序遍历:
递归方式:
1 //后序遍历 2 public void LastOrder(BinaryTreeNode<E> root){ 3 if(root == null) 4 return ; 5 else{ 6 LastOrder(root.lchild) ; 7 LastOrder(root.rchild) ; 8 System.out.print(root+" "); 9 } 10 }
非递归方式:也是借用栈的结构特点来实现,具体步骤如下:
根据遍历结果构造二叉树
根据遍历结果我们可以构造出原始的二叉树,在此过程中我们只能通过二叉树的先序+中序或中序+后序来构造:
已知一棵二叉树的先序序列和中序序列,构造该二叉树的过程如下:
已知一棵二叉树的后序序列和中序序列,构造该二叉树的过程如下:
标签:
原文地址:http://www.cnblogs.com/mukekeheart/p/5694560.html