zoukankan      html  css  js  c++  java
  • 剑指offer二叉搜索树与双向链表python

    题目描述

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

    思路

    二叉搜索树,自然想到中序遍历。中序遍历出来的结果就是排序的。因为不能创建新的节点,所以,我们定义2个指针,一个指向链表的头,一个指向当前遍历的节点,当遍历到下一个节点的适合,创建和指针双向的连接,然后把此节点改为当前遍历节点。

    代码

    # -*- coding:utf-8 -*-
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    class Solution:
        def __init__(self):
            self.listHead = None
            self.listTail = None
        def Convert(self, pRootOfTree):
            if not pRootOfTree:
                return 
            self.Convert(pRootOfTree.left)
            if not self.listHead: #遍历的第一个结点
                self.listHead = pRootOfTree
                self.listTail = pRootOfTree
            else:
                self.listTail.right = pRootOfTree
                pRootOfTree.left = self.listTail
                self.listTail = pRootOfTree
            self.Convert(pRootOfTree.right)
            return self.listHead
            
  • 相关阅读:
    Golang string slice
    Golang 切片
    Golang 数组
    Golang随机数
    如何才能轻松地分析日志?
    Linux 环境下 gzip 的加解密命令
    谁掳走了 nginx.pid 文件?
    这个 'ip' 竟然把我搞蒙圈了……
    Mysql 连接路径 url 参数解析
    C# 接口生成工具Swagger用法
  • 原文地址:https://www.cnblogs.com/wangzhihang/p/11844869.html
Copyright © 2011-2022 走看看