首页 > 其他分享 >897. Increasing Order Search Tree

897. Increasing Order Search Tree

时间:2023-05-26 22:05:32浏览次数:45  
标签:node Search right Tree None que Increasing root left


问题描述 yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。如果是迭代器则应该使用yield from

class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
# 树生成代码
def generate_tree(vals):
    if len(vals) == 0:
        return None
    que = [] # 定义队列
    fill_left = True # 由于无法通过是否为 None 来判断该节点的左儿子是否可以填充,用一个记号判断是否需要填充左节点
    for val in vals:
        node = TreeNode(val) if val is not None else None # 非空值返回节点类,否则返回 None
        if len(que)==0:
            root = node # 队列为空的话,用 root 记录根结点,用来返回
            que.append(node)
        elif fill_left:
            que[0].left = node
            fill_left = False # 填充过左儿子后,改变记号状态
            if node: # 非 None 值才进入队列
                que.append(node)
        else:
            que[0].right = node
            if node:
                que.append(node)
            que.pop(0) # 填充完右儿子,弹出节点
            fill_left = True #
    return root

root = generate_tree([5,3,6,2,4,None,8,1,None,None,None,7,9])

class Solution:
    def increasingBST(self, root: TreeNode) -> TreeNode:
        result = recursive = TreeNode(None)

        def reorder(root):
            if root:
                yield from reorder(root.left)
                yield root.val
                yield from reorder(root.right)
        for value in reorder(root):
            recursive.right = TreeNode(value)
            recursive = recursive.right
        return result.right

运行结果:

897. Increasing Order Search Tree_迭代


标签:node,Search,right,Tree,None,que,Increasing,root,left
From: https://blog.51cto.com/u_16131692/6359362

相关文章

  • 538. Convert BST to Greater Tree刷题笔记
    问题描述第一次没做出来,主要问题还是出在递归上pycharm代码classNode(object):def__init__(self,x):self.val=xself.left=Noneself.right=None#树生成代码defgenerate_tree(vals):iflen(vals)==0:returnNone......
  • 111. Minimum Depth of Binary Tree刷题笔记
    需要考虑这种情况:#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:defminDepth(self,root:Optiona......
  • 前端树形结构图treeShapeStruct,可拖拽移动,点击展开收缩,无限添加子集
    快速实现树形结构图,可拖拽移动,点击展开收缩,无限添加子集;下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12650效果图如下:  实现代码如下:#treeShapeStruct树形结构图,可拖拽移动,点击展开收缩,无限添加子集使用方法####HTML代码部分```......
  • 前端树形结构图组件 tree组件,可拖拽移动,点击展开收缩,无限添加子集
    快速实现树形结构图组件tree组件,可拖拽移动,点击展开收缩,无限添加子集;下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12650效果图如下:  实现代码如下:#treeShapeStruct树形结构图,可拖拽移动,点击展开收缩,无限添加子集使用方法####HTM......
  • ElasticSearch启动&停止命令
    ElasticSearch启动&停止命令1、查进程ps-ef|grepelastic2、杀进程kill-91302ps-ef|grepelastic3、启动服务#切换es用户,启动elasticsearch不能使用root用户suescd/opt/elasticsearch-7.10.2/bin#后台运行./elasticsearch-dps-ef|grepelastic ......
  • docker 安装elasticsearch7.9 和 SkyWalkin
    1、相关地址:官网:https://skywalking.apache.org/下载:https://skywalking.apache.org/downloads/Github:https://github.com/apache/skywalking文档:https://skywalking.apache.org/docs/main/v9.1.0/readme/ 其他版本文档,先进https://skywalking.apache.org/docs/main/,选择版本,查......
  • vue <treeSelect标签中树形选择返回非必填调整以及清内存需手动清理
    绑定必须相同 校验规则需trigger我这边用的是change(数据发生改变时发生变化触发),原来用的blur(失去焦点时触发)如上解决了我此次第一次选择完数据还报非必填问题 清理缓存手动清理了一下dataform中的gcl的数据要不然新增完事后还会返回数据 ......
  • Elasticsearch 之 join 关联查询及使用场景
    在Elasticsearch这样的分布式系统中执行类似SQL的join连接是代价是比较大的,然而,Elasticsearch却给我们提供了基于水平扩展的两种连接形式。这句话摘自Elasticsearch官网,从“然而”来看,说明某些场景某些情况下我们还是可以使用的一、join总述1、关系类比在关系型数据库中,以MySQ......
  • JS 树形数据 Tree的通用方法
    点击查看代码/***@description查找包含自身节点的父代节点*@paramlist列表数据*@paramid节点id*@parampid节点的父id*/exportfunctionlistToTree(list,id,pid){list.forEach((node)=>{constpNdoe=list.find((row)=>row[id]===nod......
  • Elasticsearch之join关联查询及使用场景 | 京东云技术团队
    在Elasticsearch这样的分布式系统中执行类似SQL的join连接是代价是比较大的,然而,Elasticsearch却给我们提供了基于水平扩展的两种连接形式。这句话摘自Elasticsearch官网,从“然而”来看,说明某些场景某些情况下我们还是可以使用的一、join总述1、关系类比在关系型数据库中,以MySQL为......