二叉树遍历

370阅读 0评论2015-12-04 Linux_木木
分类:C/C++

结点:

点击(此处)折叠或打开

  1. typedef struct node{
  2.     int data;
  3.     struct node *lchild;
  4.     struct node *rchild;
  5. }Node;

先序遍历(递归)

点击(此处)折叠或打开

  1. void prev(Node* root)
  2. {
  3.     if(root!=NULL)
  4.     {
  5.         printf("%d ",root->data);
  6.         prev(root->lchild);
  7.         prev(root->rchild);    
  8.     }
  9. }
中序遍历(递归)

点击(此处)折叠或打开

  1. void mid(Node* root)
  2. {
  3.     if(root!=NULL)
  4.     {
  5.         mid(root->lchild);
  6.         printf("%d ",root->data);
  7.         mid(root->rchild);
  8.     }
  9. }
后序遍历(递归)

点击(此处)折叠或打开

  1. void pro(Node* root)
  2. {
  3.     if(root!=NULL)
  4.     {
  5.         pro(root->lchild);
  6.         pro(root->rchild);
  7.         printf("%d ",root->data);    
  8.     }
  9. }
已知先序遍历和后序遍历,求中序遍历:
先序遍历的第一个和后序遍历的最后一个是root
而先序遍历的第二个不是root的lchild就是rchild
如果先序遍历的第二个=后序遍历的倒数第二个,则是root的rchild
如果先序遍历的第二个≠后序遍历的倒数第二个,则是root的lchild
递归下去。





上一篇:Linux环境变量相关文件
下一篇:malloc和free对被操作内存的影响