美文网首页
😯二叉树--链表新建节点

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

作者: YI_YI_ | 来源:发表于2020-01-15 15:42 被阅读0次

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: 给节点找位置进行存储

空树 左子树 右子树

相关文章

  • 114. Flatten Binary Tree to Link

    题目 给定一个二叉树的根 root,将这棵二叉树展开为链表。这个链表有两个特性 链表节点由二叉树类表示,节点左节点...

  • 《剑指Offer》知识点整理

    链表 从尾到头打印链表 删除链表节点 链表中倒数 k 个节点 合并两个有序链表 两个链表的公共节点 树 二叉树遍历...

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

    1. 定义节点--数据结构 2.节点对象声明|指针对象声明 (1)树节点(2)指针节点(树类型的指针) 详细过程分...

  • 二叉树4-二叉树展开为链表、对称二叉树、合并两个有序链表、构造二

    14. 二叉树展开为链表 思路:递归,将子树展开为链表。根节点右节点为左节点,左节点的右节点为右节点,左节点设为空...

  • python-025-把二叉树转换为双向链表

    题目:给定一个二叉树,将其转换为双向链表。 双向链表的特征是每一个节点都保存着其前驱节点和后继节点的地址,而二叉树...

  • 二叉树转链表

    给定一个二叉树,将该二叉树 就地(in-place)转换为单链表。单链表中节点顺序 为二叉树前序遍历顺序。(不额外...

  • (三)反转链表(206)

    1、新建一个newHead;2、循环链表a、保留head的next节点b、将当前head节点的next指向新建的n...

  • 反转链表

    题目: 题目的理解: 新建一个链表,然后循环给定的链表来获取每一个节点,将节点倒序添加到新链表上。 python实...

  • 反转链表

    思路1: 新建一个链表,把list每个节点插入在新链表的头部。此新链表即是所求 LNode*reverseLink...

  • 移除重复节点

    编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 解法: Set 去重 新建一个Set集合,从链表的头...

网友评论

      本文标题:😯二叉树--链表新建节点

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