二叉树的遍历

二叉树深度遍历的代码

/* Given a binary tree, print its nodes according to the
  "bottom-up" postorder traversal. */
void printPostorder(struct node* node)
{
     if (node == NULL)
        return;
 
     // first recur on left subtree
     printPostorder(node->left);
 
     // then recur on right subtree
     printPostorder(node->right);
 
     // now deal with the node
     printf("%d ", node->data);
}
 
/* Given a binary tree, print its nodes in inorder*/
void printInorder(struct node* node)
{
     if (node == NULL)
          return;
 
     /* first recur on left child */
     printInorder(node->left);
 
     /* then print the data of node */
     printf("%d ", node->data); 
 
     /* now recur on right child */
     printInorder(node->right);
}
 
/* Given a binary tree, print its nodes in inorder*/
void printPreorder(struct node* node)
{
     if (node == NULL)
          return;
 
     /* first print data of node */
     printf("%d ", node->data); 
 
     /* then recur on left sutree */
     printPreorder(node->left); 
 
     /* now recur on right subtree */
     printPreorder(node->right);
} 

二叉树的遍历代码,遵循一个基本的代码框架。区别在于访问节点数据在什么时候。

二叉树的中序遍历可以对于排序二叉树的中序遍历可以获取升序序列。
对于二叉树的前序遍历可以复制一棵树。
二叉树的后序遍历可以删除一棵树。

二叉树宽度遍历

二叉树宽度遍历的代码

void printLevelOrder(struct node* root)
{
  struct node **queue = createQueue(); //创建队列
  struct node *temp_node = root;
 
  while(temp_node)
  {
    printf("%d ", temp_node->data);
 
    /*Enqueue left child */
    if(temp_node->left)
      enQueue(queue, temp_node->left);
 
    /*Enqueue right child */
    if(temp_node->right)
      enQueue(queue, temp_node->right);
 
    /*Dequeue node and make it temp_node*/
    temp_node = deQueue(queue);
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 二叉树的遍历想必大家都不陌生,主要有三种遍历方式:前序遍历(pre-order traversal),中序遍历(i...
    akak18183阅读 4,821评论 0 1
  • 树(tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合。...
    曾大稳丶阅读 4,652评论 0 1
  • 准备工作 我们在学习二叉树的遍历之前,先继续上一讲的内容,我们来构造一个二叉树,并且打印出来! 将下图中的二叉树打...
    北方先森丶阅读 4,153评论 1 3
  • 二叉树的三种常用遍历方式 学习过数据结构的同学都清楚,除了层序遍历外,二叉树主要有三种遍历方式: 1. 先序遍历...
    SherlockBlaze阅读 4,966评论 0 4
  • 本节主要介绍如何根据二叉树的遍历序列还原二叉树 1.根据前序遍历序列ABCDEF和中序遍历序列CBAEDF如何判断...
    wlj1107阅读 3,411评论 0 0