二叉搜索树序列

一、前言

里面来源LeetCode,难度:困难

问题链接:https://leetcode-cn.com/problems/bst-sequences-lcci/

 

二、题目

从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组。

示例:

给定如下二叉树
        2
       / \
      1   3
返回:
[
   [2,1,3],
   [2,3,1]
]

 

三、题意分析

本题的题意为:“根结点的数值” 总是先于它的 “左右子树中的结点的数值” 被插入树中。父节点优先级最高需要最先读取,左右子结点优先级相同,当左结点(或右结点)被读取之后,它的左右子结点和它服叔结点是同同一优先级,都可以在下次被读取。

例如树:

1)根节点4最先读取,2和5都可以在下次中被读取,

2)若第二次读取的是结点2,则1 3 5在接下来都可以被读取,对1 3 5 全排序有6种情况(135,153,315,351,513,531)。

3)若第二次读取的是结点5,则1 3在接下来都可以被读取,对1 3 全排序有2种情况(13,31)。

可能生成此树的数组有8个:

1> 4,2,1,3,5

2> 4,2,1,5,3

3> 4,2,3,1,5

4> 4,2,3,5,1

5> 4,2,5,1,3

6> 4,2,5,3,1

7> 4,5,2,1,3

8> 4,5,2,3,1

第一次看题,将其理解成先读父节点,再读左或者右节点。实现代码见——5.1 错误理解实现代码。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值