【问题标题】:An unordered Binary tree Implementation无序二叉树实现
【发布时间】:2020-06-16 04:32:05
【问题描述】:

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

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

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

【问题讨论】:

  • 我从未听说过无序二叉树。你确定你的意思不是“不平衡”吗?
  • " 如果我​​们不在乎将两棵树视为不同的树,因为它们仅在节点的子树的相应顺序上有所不同,则称这棵树是无序的。" 你能联系一下吗?
  • 我已经完成了未排序的树(以绳索的后备存储为例),但不是无序的。如果它真的是无序的,那么二叉树可能不是正确的结构。
  • @Tushar 所以每棵树本身都是有序的(引用:“仅在各自的排序上不同”),只有在比较两棵树时,树中元素的顺序才重要。例如。两棵树,其中一棵对元素进行升序排序,另一棵降序排列将被称为“无序”。最后,这意味着(我认为):实现排序的二叉树。如果你真的想做一个无序二叉树,在这里你可以找到一些 Java 的解决方案,应该很容易适应:stackoverflow.com/questions/30146632/…

标签: c++ data-structures tree binary-tree unordered


【解决方案1】:
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 的左子节点。 这称为二叉树中的级别顺序插入。它没有顺序或未排序都意味着相同的含义。

【讨论】:

    猜你喜欢
    • 2012-01-09
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 2017-10-05
    • 2015-07-23
    相关资源
    最近更新 更多