zoukankan      html  css  js  c++  java
  • 二叉树

    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);
    }

    层序遍历:

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

  • 相关阅读:
    自定义控件-控件关联
    DELPHI INSERT INTO 语句的语法错误 解决方法
    Delphi控件开发
    Delphi控件复合控件
    vcl学习备忘网址
    Delphi单元文件Unit详解
    aowner , nil 和 self 的区别
    Delphi 自定义事件的例子
    PHP中Heredoc
    What is HTTP_USER_AGENT?
  • 原文地址:https://www.cnblogs.com/liujianing/p/9348268.html
Copyright © 2011-2022 走看看