美文网首页C语言数据结构
二叉树的结点定义及遍历

二叉树的结点定义及遍历

作者: tingshuo123 | 来源:发表于2017-09-28 16:23 被阅读0次
#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\n", node->data);
        preorder(node->Left);
        preorder(node->Right);
    }
}

// 中序遍历 左子结点 -> 访问根 -> 右子结点
void inorder(Node* node) {
    if (node != NULL) {
        inorder(node->Left);
        printf("%d\n", node->data);
        inorder(node->Right);
    }
}

// 后序遍历 左子结点 -> 右子结点 -> 访问根
void postorder(Node* node) {
    if (node != NULL) {
        postorder(node->Left);
        postorder(node->Right);
        printf("%d\n", node->data);
    }
}

int main(void)
{
    // 创建结点
    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;  // 没有子结点就指向 NULL
    n3.Left = NULL;
    n3.Right = NULL;
    n4.Left = NULL;
    n4.Right = NULL;
    
    // 遍历结点
    printf("先序遍历结果:\n");
    preorder(&n1);
    printf("中序遍历结果:\n");
    inorder(&n1);
    printf("后序遍历结果:\n");
    postorder(&n1);
    
    
    return 0;
}

相关文章

  • 二叉树(先序遍历,中序遍历,后序遍历)

    二叉树定义 每个节点的子节点数(度)不能大于2 先序遍历 定义:从二叉树的根结点出发,当第一次到达结点时就输出结点...

  • 二叉树的递归遍历

    二叉树的结构定义 二叉树的遍历 对二叉树的遍历是指访问树的每个结点,且每个结点仅被访问一次。访问是一个抽象的概念,...

  • 常见数据结构-Java

    一、链表 二、二叉树 前序遍历-先输出当前结点的数据,再依次遍历输出左结点和右结点 中序遍历-先遍历输出左结点,再...

  • 二叉树的遍历

    关于二叉树的算法问题,一般都以二叉树的遍历为基础,这里给出二叉树的多种遍历方式 树结构: 树结点的定义及其构建: ...

  • 二叉树的递归遍历

    对于二叉树T,可以递归定义它的先序遍历、中序遍历和后序遍历,如下所示: PreOrder(T)=T的根结点+Pre...

  • 问题:二叉树的遍历

    二叉树的遍历 前序遍历:根结点 ---> 左子树 ---> 右子树中序遍历:左子树---> 根结点 ---> 右子...

  • 数据结构与算法13-线索二叉树

    定义 在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历...

  • JS遍历二叉树

    定义 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所...

  • 二叉树的遍历

    二叉树结点 先序,中序和后序遍历过程:遍历过程经过结点的路线一样,只是访问各结点的时机不同。每个结点都会被遍历3次...

  • 二叉树的遍历

    二叉树的遍历 一、二叉树的遍历 二叉树的遍历(traversing binary tree)是指从根结点出发,按照...

网友评论

    本文标题:二叉树的结点定义及遍历

    本文链接:https://www.haomeiwen.com/subject/emcvextx.html