zoukankan      html  css  js  c++  java
  • 26.二叉搜索树与双向链表

    题目描述

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

    思路

    根节点将left连接到左子树的最右节点,

    将right连接到右子树的最左节点

    需要注意的是,我们要返回的是头节点,即最左边的节点,所以递归返回的是最左边的节点

    右子树的最左边节点和根节点之间可以互相连接,但是左子树需要找到最右,并且当leftNode为空时,返回的应该是根节点本身

    下面看代码

     1 class Solution:
     2     def Convert(self, pRootOfTree):
     3         # write code here
     4         if pRootOfTree == None:
     5             return None
     6         def find_right(node):
     7             while node.right:
     8                 node=node.right
     9             return node
    10         
    11         leftNode = self.Convert(pRootOfTree.left)
    12         rightNode = self.Convert(pRootOfTree.right)
    13         
    14         retNode = leftNode
    15         if leftNode:
    16             leftNode = find_right(leftNode)
    17         else:
    18             retNode = pRootOfTree
    19             
    20         pRootOfTree.left = leftNode
    21         pRootOfTree.right = rightNode
    22         
    23         if leftNode !=None :
    24             leftNode.right = pRootOfTree
    25         if rightNode !=None:
    26             rightNode.left = pRootOfTree
    27         return retNode

    2019-12-17 16:40:17

  • 相关阅读:
    多线程之 Final变量 详解
    多线程之 Volatile 变量 详解
    并发安全问题之HashMap
    探索设计模式目录
    MYsql 锁详解 锁 与索引的关系
    JVM GC 相关
    sql 注入 及 in 注入
    00
    03
    02
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/12055347.html
Copyright © 2011-2022 走看看