剑指offer-python刷题-二叉搜索树的第k个结点
发布日期:2021-07-28 12:03:16
浏览次数:5
分类:技术文章
本文共 1452 字,大约阅读时间需要 4 分钟。
题目:给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。
二叉搜索树的特性:中序遍历后,单调递增。因此关键是写出二叉搜索树的中序遍历。
方法一:通过普通的循环写中序遍历。先把当前结点及其所有左叶结点逐个入栈,在逐个出栈,将其右叶结点入栈。
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回对应节点TreeNode def KthNode(self, pRoot, k): # write code here mid = self.mid_tree(pRoot) if not mid or k < 1 or k > len(mid): return None return mid[k-1] #中序遍历 def mid_tree(self,pRoot): result = [] tem_stack = [] tem = pRoot while tem or tem_stack: while tem: tem_stack.append(tem) tem = tem.left node = tem_stack.pop() result.append(node) tem = node.right return result
方法二:利用递归的思想写遍历。
此方法需要注意的是在类中创建一个空列表(实例变量),通过递归的函数每次向该列表内添加结点。
# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # 返回对应节点TreeNode def KthNode(self, pRoot, k): # write code here self.myList = [] self.mid_tree(pRoot) if not self.myList or k < 1 or k > len(self.myList): return None return self.myList[k-1] def mid_tree(self,pRoot): if not pRoot: return None self.mid_tree(pRoot.left) self.myList.append(pRoot) self.mid_tree(pRoot.right)
转载地址:https://blog.csdn.net/sinat_42437278/article/details/118182521 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月08日 08时30分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【多线程与高并发】 Java两个线程轮流打印字符串?
2019-04-26
【Linux命令篇】Linux命令实践
2019-04-26
【Leetcode单调队列】Leetcode239 滑动窗口最大值
2019-04-26
【Leetcode-单调栈】单调栈相关的题目-下一个更大的元素I 每日温度
2019-04-26
【Leetcode单调队列】- 洛谷P1714切蛋糕
2019-04-26
【Leetcode优先级队列】- 数据流的中位数
2019-04-26
【Leetcode优先级队列】-合并K个升序链表
2019-04-26
【多线程与高并发】-Java如何实现一个阻塞队列呢?
2019-04-26
【多线程高并发】-多线程实现数组的读与写
2019-04-26
【Java设计者模式】-Java实现订阅-发布者模式
2019-04-26
【计算机操作系统】-什么是系统调用呢?什么是用户态?什么是内核态?
2019-04-26
【计算机操作系统-进程管理】-进程通信是什么呢?
2019-04-26
Python程序元素分析
2019-04-26
TurtleArt美景图
2019-04-26
margin布局
2019-04-26
盒模型之border实践--三角形
2019-04-26
块状元素与内敛元素
2019-04-26
CSS控制段落和文字属性和背景
2019-04-26
Python语言开发工具
2019-04-26