首页 > 解决方案 > 无序二叉树实现

问题描述

我正在尝试创建一个无序二叉树。我们如何在无序二叉树中插入 Treenode?应该是什么逻辑?

在这里插入是指将节点作为叶子插入。就像我从根节点开始然后遍历到正确的节点一样,现在我在哪里插入节点。

如果有人对 UNORDERED 二叉树[非 BST] 实现有参考,请提供。

标签: c++data-structurestreebinary-treeunordered

解决方案


void addnode(T data){
    Node<T>* new_node=new Node<T>(data);
    if(this->root==nullptr){
        this->root= new_node;
        return ;
    }else{
        std::queue<Node<T>* > Q;
        Q.push(this->root);
        while(!Q.empty()){
            Node<T>* popping_element= Q.front();
            Q.pop();

            if(!popping_element->left){
                popping_element->left=new_node;
                return;
            }else if(!popping_element->right){
                      popping_element->right=new_node;
                      return;
            }else{
                Q.push(popping_element->left);
                Q.push(popping_element->right);
            }
        }
    }

}

我试图做 树形结构 的添加一个节点作为 30 的左子节点。这称为二叉树中的级别顺序插入。它没有顺序或未排序都意味着相同的含义。


推荐阅读