• 二叉树


    struct Node
    {
    int data;
    Node* left;
    Node* right;
    };

    Node* createNode(int data)
    {
    Node* tempNode = NULL;
    tempNode = (Node*)malloc(sizeof(Node));
    tempNode->left = NULL;
    tempNode->right = NULL;
    tempNode->data = data;

    return tempNode;
    }

    void insertNode(Node* p, int data)
    {
    Node* tempNode = createNode(data);

    //左子树<=data,右子树>data

    while (1)
    {
    if (tempNode->data > p->data)
    {
    if (p->right == NULL)
    {
    p->right = tempNode;
    break;
    }
    else
    {
    p = p->right;
    }
    }
    if (tempNode->data <= p->data)
    {
    if (p->left == NULL)
    {
    p->left = tempNode;
    break;
    }
    else
    {
    p = p->left;
    }
    }
    }
    }

    先序遍历:

    若树为空,则空操作返回。否则,先访问根节点,然后前序遍历左子树,再前序遍历右子树。

    void preOrder(Node* p)
    {
    if (p == NULL)
    {
    return;
    }
    printf("%d", p->data);
    preOrder(p->left);
    preOrder(p->right);
    }

    中序遍历:

    若树为空,则空操作返回。中序遍历根节点的左子树,然后是访问根节点,最后中序遍历根节点的右子树。

    void inOrder(Node* p)
    {
    if (p == NULL)
    {
    return;
    }
    preOrder(p->left);
    printf("%d", p->data);
    preOrder(p->right);
    }

    后序遍历:

    若树为空,则空操作返回。否则,从左到右先叶子后节点的方式遍历访问左右子树,最后访问根节点。

    void postOrder(Node* p)
    {
    if (p == NULL)
    {
    return;
    }
    preOrder(p->left);
    preOrder(p->right);
    printf("%d", p->data);
    }

    层序遍历:

    利用队列,根节点入队,子节点入队,最后依次出队即可

  • 相关阅读:
    ubuntu下使用ppa安装codeblocks集成开发环境
    CentOS g++ 安装
    CentOS 7.1云服务器 配置FTP服务器vsftpd
    div高度自适应浏览器高度
    HTML中的head结构
    javascript高级进阶系列
    javascript集中跨域方法
    canvas标签的width和height以及style.width和style.height的区别
    html5学习笔记之入新特性
    ie下a标签里的图片会有边框
  • 原文地址:https://www.cnblogs.com/liujianing/p/9348268.html
Copyright © 2020-2023  润新知