二叉树的遍历 三

来源:互联网 发布:带海拔的指南针软件 编辑:程序博客网 时间:2024/04/24 11:47

二叉树的遍历是指按照某种顺序访问二叉树中的每个结点,使每个结点被访问一次,而且仅被访问一次。

1.先序遍历 

 

先序遍历 先序遍历是从当前结点(temp)开始,然后访问其左孩子,再访问其右孩子。如果从BST树的根结点temp开始,算法如下:

 

(1) 如果temp为空,退出

(2)访问temp,输出值

(3)对temp的左孩子重复第一步。

(4)对temp的有孩子重复第二步。

 

先序遍历的递归算法如下:

 

public void PreorderTraversal(Node temp)

{

    if(temp!=null)

     {

        Console.WriteLine("结点的值为:"+temp.Value.ToString());//输出结点的数据域

        PreorderTraversal(temp.Left);//先序递归遍历root的左子树

        PreorderTraversal(temp.right);//先序递归遍历root的右子树 

     }

 

  else

   

  return;

}

 

 

 

2.中序遍历  

中序遍历是从当前结点的左孩子开始访问,再访问当前结点,最后是其右结点。假定BST树的根结点为temp,算法如下:

(1)如果temp为空,退出

(2)访问temp的左孩子

(3)对temp的重复第一步

(4)对temp的右孩子重复第一步

中序遍历的算法如下:

 

 public void InorderTraversal(Node temp)

{

 

if(temp != null)

{

   InorderTraversal(temp.left);//中序递归遍历root的左子树

   Console.WriteLine(temp.Value.ToString());

   InorderTraversal(temp.Right);//中序递归遍历root的右子树

}

else

   return;

}

 

 

 

3.后序遍历

后序遍历首先从访问当前结点的左孩子开始,然后是右孩子,最后才是当前结点的本身。假定BST树的根结点为temp,算法如下:

 

public void PostOrderTraverse(Node temp)

{

  if(temp != null)

  {

    PostOrderTraverse(temp.Left);//先序递归遍历root的左子树

    PostOrderTraverse(temp.Right);//先序递归遍历root的右子树

    Console.WriteLine(temp.Value.Tostring());//输出结点的数据域

  }

   else

      return;

}

 

 

原创粉丝点击