当前位置: 首页 > 知识库问答 >
问题:

具有n个节点的所有可能的全二叉树的列表

景昊焜
2023-03-14

这是问题的链接:所有可能的完整二叉树。

给定一个整数n,返回包含n节点的所有可能的完整二叉树的列表。答案中每个树的每个节点都必须有节点。val==0

答案的每个元素都是一个可能树的根节点。您可以按任意顺序返回最终的树列表。

完整的二叉树是一个二叉树,其中每个节点正好有02子节点。

例1:

输入:n=7

输出:

[[0,0,0,null,null,0,0,null,null,0,0],
 [0,0,0,null,null,0,0,0,0],
 [0,0,0,0,0,0,0],
 [0,0,0,0,0,null,null,null,null,0,0],
 [0,0,0,0,0,null,null,0,0]]

在这个问题中,我必须返回所有可能的完整二叉树的列表,这是我的java代码的解决方案,有人能帮我在哪里我的代码是错误的,对于每一个输入我的代码是给空列表。

class Solution {
    public List<TreeNode> allPossibleFBT(int n) {
        if (n == 1) {
            List<TreeNode> list = new ArrayList<TreeNode>();
            list.add(new TreeNode(0));
            return list;
        }
        List<TreeNode> left;
        List<TreeNode> right;
        List<TreeNode> all = new ArrayList<TreeNode>();

        for (int i = 1; i < n; i = i + 2) {
            left = allPossibleFBT(i);
            right = allPossibleFBT(n - i - 1);

            for (int k = 0; i < left.size(); k++) {
                for (TreeNode treeNode : right) {
                    TreeNode root = new TreeNode(0);
                    root.left = left.get(k);
                    root.right = treeNode;
                    all.add(root);
                }
            }
        }
        return all;
    }
}

TreeNode类:

/**
 * Definition for a binary tree node.
 */
public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode() { }

    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

共有1个答案

柯曦
2023-03-14

for(int k=0;i

 类似资料:
  • 假设我有一个简单的二叉树节点类,如下所示: 如何添加一个能够递归遍历任何大小的树的方法,从左到右访问每个现有节点,而无需重新访问已遍历的节点? 这行得通吗?

  • 我有一个二叉树,每个节点上都有一个单词。 在另一个类中,我需要逐个访问节点,然后操作单词。从另一个类逐个访问节点的最佳方法是什么? 在我的币树类中,每个节点都有一个左子、右子和一个值(String)。我有三个方法,printinorder-,插入和find节点。查找节点接收一个字符串,并查看该字符串是否存储在任何节点值中。 我有另一个类,需要一个接一个地获取节点,但是我不确定从另一个类中获取的最佳

  • 本节要讨论的是当给定 n(n>=0)个结点时,可以构建多少种形态不同的树。 如果两棵树中各个结点的位置都一一对应,可以说这两棵树相似。如果两棵树不仅相似,而且对应结点上的数据也相同,就可以说这两棵树等价。本节中,形态不同的树指的是互不相似的树。 前面介绍过,对于任意一棵普通树,通过孩子兄弟表示法的转化,都可以找到唯一的一棵 二叉树与之对应。所以本节研究的题目也可以转化成:n 个结点可以构建多少种形

  • 问题查找具有n个节点的完整二叉树中的叶节点数。 我为上述问题编写了一个递归程序,每当我到达一个没有子节点的节点时,遍历树并增加叶节点的数量。但由于这棵树是一棵完整的二叉树,我认为这会使问题变得更容易,但我不知道如何解决。它是否可以简化为紧凑形式(类似于公式)。

  • 开始为不平衡的BST结构编写删除函数。为第一种情况手动运行一些测试(节点没有子节点)。决定在大小为1的树上运行它(仅在根上),出于某种原因,它似乎没有按照我在本语句第3行期望的方式将根重新分配到: 然后,当我在单节点树上运行时,它应该只是

  • 我遇到了这个问题,似乎在任何地方都找不到解决办法。 给定一个二叉树,其中每个节点都包含一个数字,表示其子树中剩余节点的数量,编写一个函数,返回第n个按顺序遍历的节点。 查找按序遍历的第n个节点相当简单,但如何使用关于左节点数的信息来改进该过程?