所有可能的满二叉树

leetcode 894

满二叉树是一类二叉树,其中每个结点恰好有 0 或 2 个子结点。

返回包含 N 个结点的所有可能满二叉树的列表。 答案的每个元素都是一个可能树的根结点。

答案中每个树的每个结点必须node.val=0

你可以按任何顺序返回树的最终列表。

示例:

image

提示:

  • 1 <= N <= 20
/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */


func allPossibleFBT(N int) []*TreeNode {
    var set = map[int][]*TreeNode{0:[]*TreeNode{&TreeNode{Val: 0}}}
  
    var helper func(N int)[]*TreeNode
    helper = func(N int)[]*TreeNode{
        if N & 1 == 0{
            return nil
        }
        res := []*TreeNode{}
        if _,ok := set[N/2]; ok{
            return set[N/2]
        }
        
        for i:=1;i < N-1; i+=2{
            left := helper(i)
            right := helper(N-i-1)
            for _,l :=range left{
                for _,r := range right{
                    node := &TreeNode{
                        Val:0,
                        Left: l,
                        Right:r,
                    }
                    res = append(res,node)
                }
            }
        }
        set[N/2] = res
        return res
    }

    return helper(N)
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 13,420评论 0 25
  • 树的定义与基本术语   树型结构是一类重要的非线性数据结构,其中以树和二叉树最为常用,是以分支关系定义的层次结构。...
    java技术分享师阅读 1,153评论 0 1
  • 树 记录《剑指offer》中所有关于树的题目,以及LeetCode中的相似题目。 相关题目列表 题目 树是一种最常...
    wenmingxing阅读 1,453评论 2 13
  • 四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...
    MinoyJet阅读 1,616评论 0 7
  • 今天关窗的时候飞进来一只大苍蝇,我正在跟爸妈视频腾不出手,就没理它,任凭它在空中做盘旋多普勒运动,不断发出恼人的嗡...
    请不要叫我小Helen阅读 251评论 0 0