You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现普通二叉树的递归插入函数(非BST)

问题:普通二叉树的递归平衡插入(按层从左到右)

需求说明:

  • 实现**普通二叉树(非二叉搜索树BST)**的递归插入函数
  • 插入时需保持树的平衡,严格遵循层序从左到右的顺序填充子节点
  • 不关心节点值的大小顺序或重复情况
  • 禁止使用队列等辅助数据结构,仅通过递归实现

当前实现代码

插入函数

TreeNode insert(int data, TreeNode root, boolean isLeft){
    if(root == null){
        root = new TreeNode(data);
    }
    else if(root.left == null){
        root.left = new TreeNode(data);
    }
    else if(root.right == null){
        root.right = new TreeNode(data);
    }
    else{
        if(isLeft){
            insert(data, root.right, false);
        }
        else{
            insert(data, root.left, true);
        }
    }
    return root;
}

初始化代码

public static void main(String[] args){
    TreeNode root = new TreeNode(1);
    boolean isLeft = false;
    for(int i = 2; i < 11; i++){
        isLeft = !isLeft;
       root = root.insert(i, root, isLeft);
    }
}

问题现状

当前代码生成的树结构未达到预期的层序从左到右插入的平衡效果:

实际生成结构

│       ┌── 7
│   ┌── 3
│   │   └── 5
│   │       └── 9
└── 1
    │       ┌── 10
    │   ┌── 6
    │   │   └── 8
    └── 2
        └── 4

理想目标结构

│       ┌── 7
│   ┌── 3
│   │   └── 6
│   │        
└── 1
    │       
    │   ┌── 5
    │   │   └── 10
    └── 2   ┌── 9
        └── 4
            └── 8

注:节点数值仅为循环生成的标识,核心要求是按层从左到右的顺序插入以保持树平衡,与数值大小无关。


内容的提问来源于stack exchange,提问作者Mudpill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:55:14