😯二叉树--链表新建节点

2020-01-15  本文已影响0人  YI_YI_

1. 定义节点--数据结构

image.png
// 1.定义结构体
class Node{
public:
    int value;
    struct Node *left_Node;
    struct Node *right_Node;
};

2.节点对象声明|指针对象声明

(1)树节点
(2)指针节点(树类型的指针)

// 2
// 类型定义-节点
typedef class Node TreeNode;
// 类型定义-节点指针
typedef TreeNode *BinaryTree;
详细过程分析
  1. 定义结构体
  2. 声明节点
  3. 为节点的使用分配空间
  4. 指针指向


    image.png

3. 声明树根节点

// 定义根节点指针
BinaryTree rootNode;

4.定义函数: 创建添加二叉树节点

void Add_Node_To_Tree(int value){
    // 当前节点指针
    BinaryTree currentNode;
    // 新的节点
    BinaryTree newNode;
    // 用来记录是否插入新的节点
    int flag = 0;
    
    // 新的节点分配的内存空间
    //(节点指针,放入内容)
    newNode = (BinaryTree)malloc(sizeof(TreeNode));

    // 建立节点的内容
    newNode->left_Node = NULL;
    newNode->right_Node = NULL;
    newNode->value = value;


    // 建立树
    if (rootNode == NULL){
        rootNode = newNode;
    }
    else{
        currentNode = rootNode;
        // 当为true
        while (!flag)
        {
            if (value < currentNode->value){
                // 在左子树
                if (currentNode->left_Node == NULL){
                    currentNode->left_Node = newNode;
                    flag = 1;
                }
                else{
                    currentNode = currentNode->left_Node;
                }
            }
            else{
                // 在右子树

                if (currentNode->right_Node == NULL){
                    currentNode->right_Node = newNode;
                    flag = 1;
                }
                else{
                    currentNode = currentNode->right_Node;

                }
            }

        }
    }
}

分析

step1 : 定义指针对象
(1)当前节点指针对象
(2)新的节点的指针对象

定义指针对象

step2:定义内容


内容储存

step3: 给节点找位置进行存储

空树 左子树 右子树
上一篇 下一篇

猜你喜欢

热点阅读