0 0

这个问题一直没有解答,求解。10

  //输入参数为广度优先算法遍历的二叉树字符串LIST,每个节点对应子节点数LIST。
   //
  public static TreeNode<String> rebuildFromBFSList(List<String> bfsData, List<Integer> childCounts)
  {
    // TODO: your code for part (b)
    return null;
  }



bfsData  A B C D E F G
childCounts  6 4 0 0 2 0 0


    //       A
    //      / \
    //     B   C
    //    / \
    //   D   E
    //      / \
    //     F   G


示例数据如上图所示,求解,不胜感激。
2013年5月14日 13:16

1个答案 按时间排序 按投票排序

0 0

public static void main(String[] args){
       ArrayList<String> data=new ArrayList<String>();
       data.add("A");
       data.add("B");
       data.add("C");
       data.add("D");
       data.add("E");
       data.add("F");
       data.add("G");
      
       ArrayList<Integer> counts=new ArrayList<Integer>();
       counts.add(6);
       counts.add(4);
       counts.add(0);
       counts.add(0);
       counts.add(2);
       counts.add(0);
       counts.add(0);
      
       TreeNode root=rebuildFromBFSList(data,counts);
       printNode(root);
   }
   static class TreeNode{
       String value;
       Integer i;
       TreeNode left;
       TreeNode right;
       public TreeNode(String s,Integer i){
           this.value=s;
           this.i=i;
           this.left=this.right=null;
       }
   }
  
   public static TreeNode rebuildFromBFSList(List<String> bfsData, List<Integer> childCounts)
  {
    Queue<TreeNode> queue=new LinkedList<TreeNode>();
    int i=0;
    int len=childCounts.size();
    TreeNode root=new TreeNode(bfsData.get(i),childCounts.get(i));
    i++;
    queue.offer(root);
    while(!queue.isEmpty()){
        TreeNode n=queue.poll();
        if(n.i==0) continue;
        int sum=0;
        for(;i<len;++i){
            int k=childCounts.get(i);
            TreeNode child=new TreeNode(bfsData.get(i),k);
            queue.offer(child);
            if(sum==0) n.left=child;
            else n.right=child;
            k=k+1;
            sum+=k;
            if(sum==n.i) {
                i=i+1;
                break;
            }
        }
    }
    return root;
  }
6 4 0 0 2 0 0
这里有个规律,6=4+0+1+1,1指的是左右节点。代码应该是对的。。

2013年5月14日 17:28

相关推荐

    回溯法求解传教士问题

    这个过程会一直进行,直到所有角色都安全过河,或者确定没有解决方案。 在VC++2005环境下实现这个问题,我们需要创建一个程序,包含以下关键部分: 1. **状态表示**:用两个整数分别表示河两岸的传教士和食人族...

    力学求解软件

    结构力学求解器(SM Solver for Windows)是一个面向教师、学生以及工程技术人员的计算机辅助分析计算软件,其求解内容包括了二维平面结构(体系)的几何组成、静定、超静定、位移、内力、影响线、包络图、自由振动...

    数学建模第三版 课后习题解答

    这一部分将详细介绍微分方程的基本理论、求解方法以及它们在实际问题中的应用案例。 4. **概率统计模型**:概率统计模型在处理随机现象时发挥着重要作用。这部分内容包括了概率论基础知识、统计推断方法以及常见...

    基于寻找2-SAT子问题的SAT算法

    该问题在1971年被库克证明为NP完全问题,这意味着如果能找到一个多项式时间内解决SAT问题的方法,则P=NP问题将得到解答。 本文介绍了一种新型的SAT求解算法——基于寻找可满足2-SAT子问题的算法(Finding ...

    算法导论习题解答(英文)

    - 解释递归算法如何分解问题并逐步求解。 4. **第5章:概率分析与随机化算法** - **知识点**: - 随机变量与期望值的基本概念。 - 如何利用概率工具分析算法性能。 - **习题解答解析**: - 探讨随机化算法的...

    C语言解数独程序:贪心+递归

    这个过程会一直重复,直到找到解决方案或所有可能性都被尝试过。 在这个C语言实现的数独求解器中,程序可能会包含以下关键部分: 1. **输入解析**:程序需要读取数独的初始状态,这通常是从文件中获取。文件可能...

    计算机软件技术基础-习题一解答.doc

    这个循环的执行次数可以通过求解 i 的值达到 100 + n 时的 k 来确定。 错误处理部分讨论了三种不同的方法: - 方法(1) 直接输出错误信息并退出程序,简单明了,但不能提供具体错误原因。 - 方法(2) 通过返回值表示...

    2019秋九年级数学下册期末综合训练一直角三角形的边角关系新版北师大版2019120511

    7. **三角形相似和等腰三角形的性质**:解答题12、13、14和15展示了三角形相似和等腰三角形的性质在实际问题中的应用,通过角度和边长的关系求解未知量。 8. **坐标几何与三角函数的结合**:虽然没有具体题目展示,...

    OMP,用于稀疏还原,稀疏采样,对L1范数,L2范数约束求解

    这个过程会一直持续到达到预设的迭代次数或者非零系数的数量满足某个阈值。在L1范数约束下,OMP倾向于找到更稀疏的解,因为L1范数最小化可以诱导稀疏性。 L1范数是每个元素绝对值之和,而L2范数是所有元素平方和的...

    MATLAB-2015-机设678-上机习题五-解答.pdf

    这个问题可以通过循环结构来解决,通过逐年增加存款金额,并利用复利公式计算总金额,直到总金额达到或超过目标金额为止。 4. 采用二分法求解方程根: 二分法是解决非线性方程根的数值方法之一,它适用于求解单调...

    算法导论教师手册(和习题解答不同)

    相比之下,教师手册中的习题解答针对的是书中较难的问题,并且由原作者亲自审核,因此更为可靠和准确。 #### 三、知识点详解 ##### (1) 第2章:入门 - **内容概览**:这部分主要介绍了算法的基础概念,如算法的定义...

    函数的基本性质练习试题整理.doc

    7. **实际应用**:解答题第19题将函数的性质应用于经济学的边际分析,求解利润函数和边际利润函数,并讨论它们的最大值,揭示了数学模型在实际问题中的应用。 8. **复合函数的单调性**:解答题第20题探讨了一个复合...

    2016年中考数学一轮复习第十七讲锐角三角函数与解直角三角形专题训练

    示例问题展示了如何运用锐角三角函数的定义和特殊角的三角函数值来求解问题,如求解sin A、tan B等。解题关键在于明确角度对应的三角形边角关系,并熟练运用三角函数公式。 通过深入理解和掌握这些知识点,学生...

    2013年高考数学 考前冲刺大题精做 专题8 函数与导数基础篇 文(教师版)

    【函数与导数基础】是高考数学中的重要知识点,它主要涵盖了导数的几何意义、导数的应用,包括求...在解答过程中,要注意合理运用导数工具,避免忽视定义域优先原则,同时注意转换思维,将问题转化为已知模型进行求解。

    6、第六章 操作与游戏 2021.06.05(A).pdf

    这个原理通常被用来证明某些存在性的问题。 在组合问题中,概率统计的应用也不可或缺。概率统计问题考察的是事件发生的可能性以及对数据的分析和解释能力。例如,在一道概率统计题中,可能会涉及到如何计算在一定...

    2023大作业要求.pdf

    在这个作业中,学生需要处理复合优化问题,其中涉及到不同可微的函数和具有容易求解其 proximal 运算符的函数。Proximal 运算符在凸优化中扮演重要角色,特别是在解决非光滑或非凸优化问题时。 ### 知识点二:...

    【费曼物理资料大全集】Smirnov.-.Feynman.Integral.Calculus.(Springer,.2006)

    自量子场论早期以来,求解这类积分一直是理论物理学中的一个关键挑战。 #### 费曼积分概述 费曼积分源于量子场论中循环图的计算需求。在量子场论中,粒子间相互作用可以通过一系列图形来表示,这些图形被称为费曼...

    vc.rar_visual c

    5. "输入一行字符,统计其中的英文字符个数,空格个数,数字个数,其他个数 - 副本.txt":与上一个程序类似,只是多了个副本,可能代表这是对同一问题的另一种实现或优化。 6. "辗转相除法求两个数的最大公约数.txt...

Global site tag (gtag.js) - Google Analytics