数据结构 二叉树中序遍历 C语言

二叉树的遍历:是指从根节点出发,按照某种次序依次访问二叉树中的所有结点。

二叉树遍历一共又有四种:
1.前序遍历
2.后序遍历
3.中序遍历
4.层序遍历

口诀:
中序遍历:
左根右

中序遍历:若树为空,则空操作返回,否则从根节点开始,(注意并不是先访问根节点)中序遍历根节点的左子树,然后访问根节点,最后中序遍历右子树。
在这里插入图片描述

首先我们访问的是最左的左子树是H,然后访问这个最左左子树的根节点D,然后访问他的右子树I, 然后呢 我们 看B ,D是B的左子树吧,我们就可以把D H(D的左子树)I(D的右子树),这三个看成一个整体 也就是B的左子树,所以返回B,然后返回B的右子树E,然后E的左子树没有,那么我们返回E的右子树 也就是J,然后对于B来说A是根节点,我们可以把A左侧B以下所有的看成一个整体,左侧已经全部遍历完成了,那么我们要遍历A这个根节点,然后要访问右侧最左边的左子树,结果啥也没有,就是K左侧没有 ,那么根据中序遍历规则,我们应该访问的是根节点,根节点访问完毕后,网文的是右子树K,然后F K(右子树)我们把这俩个看成一个整体,也就是C的左边全部访问完了,那么C作为根节点应该遍历出来,所以下一个遍历的字母就是C,然后呢就是右子树G.

H D I B E J A F K C G
在这里插入图片描述
8 6 5 7

#include <stdio.h>
#include <stdlib.h>
typedef struct node{
  int data;
  struct node* left; 
  struct node* right;
} Node;
//先序遍历
void preorder(Node* node){
  if(node !=NULL){
    printf("%d",node -> data);
    preorder(node -> left);
       printf("%d",node -> data);
    preorder(node -> right);
  }
  }
  //中序遍历
void inorder(Node* node)
{
if(node!=NULL){
   inorder(node -> left);
   printf("%d\n",node ->data);
   inorder (node -> right);
}
}

int main(){
Node n1;
Node n2;
Node n3;
Node n4;
n1.data = 5;
n2.data=6;
n3.data =7;
n4.data=8;
n1.left = &n2;
n1.right = &n3;
n2.left =&n4;
n2.right=NULL;
n3.left =NULL;
n3.right =NULL;
n4.left=NULL;
n4. right=NULL;

inorder(&n1);
}

在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值