二叉树查找后继节点(即中序遍历情况下的这个节点的下一个) Python实现
1.若节点类型没有parent属性,采用中序遍历方式获取后继节点
1 def getSuccessorNode(head, node): 2 if (not node) or (not head): 3 return None 4 stack = [] 5 flag = False 6 while head or len(stack) > 0: 7 if head: 8 stack.append(head) 9 head = head.left 10 else: 11 head = stack.pop() 12 if flag: 13 return head 14 if head == node: # 若找到当前节点,则下一个弹出的节点即为后继节点 15 flag = True 16 head = head.right 17 return None
2.若节点存在parent属性即
1 class TreeNode: 2 def __init__(self, x=0): 3 self.val = x 4 self.parent = None 5 self.left = None 6 self.right = None 7 8 9 def getSuccessorNode(node): 10 if not node : 11 return None 12 if node.right: # 如果当前节点有右子树,则返回右子树的最左边节点 13 node = node.right 14 while node.left: 15 node = node.left 16 return node 17 else: # 没有右子树 则向上找寻父节点,直到为父节点的左子树,返回父节点,否则返回空 18 par = node.parent 19 while not par and par.left != node: 20 node = par 21 par = par.parent 22 return par
转载于:https://www.cnblogs.com/icekx/p/9131618.html
二叉树查找后继节点(即中序遍历情况下的这个节点的下一个) Python实现相关推荐
- 【Java数据结构】二叉树的前中后序遍历(递归和非递归)
二叉树的遍历 递归做法 前序遍历 中序遍历 后序遍历 非递归 前序遍历 中序遍历 后序遍历 二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 递归做法 前序遍 ...
- 判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果. 如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8 ...
- 9判断整数序列是不是二元查找树的后序遍历结果
转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4252095.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...
- 二叉树的前中后序遍历(考试常考)
二叉树遍历的概念 二叉树的遍历是按某种规则对二叉树的每个节点均只被访问一次,根据根节点访问位置的不同分为三种:先序遍历(根左右).中序遍历(左根右).后序遍历(左右根). 由于树是通过 ...
- 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...
- 玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历
题目: 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第 ...
- 二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回 true ,否则返回 false . 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: ...
- 建立二叉树:已知层次遍历顺序建立二叉树、已知先序遍历顺序建立二叉树
其他二叉树知识!二叉树知识汇总 目录 前提知识: 约定: 二叉树节点的存储结构: 创建一个节点: 建立二叉树的几种方法: 一.已知先序遍历顺序,构建二叉树.(链式存储) 二.已知层次遍历顺序,构建二叉 ...
- 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]
二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...
- 程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构]
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8 ...
最新文章
- Ubuntu下安装RabbitMQ
- Objective-C中常用转义字符
- bccomp在php中什么意思,PHP bccomp()用法及代码示例
- 小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear
- [转载] python中print()函数的用法和end=““不换行详解
- 常见错误 不能打开注册表关键字
- IOS 文件管理 2
- SESSION和COOKIE的使用
- Reading HTML content from a UIWebView
- ubuntu 环境安装微信
- 电力行业安全建设方案
- 部队室内靶场有哪些硬件设备和强制性存在的系统
- Android 打开网络设置界面
- codeforces1463B. Find The Array
- 表现与数据分离、web语义化的理解
- Linux·工作队列
- 机器学习笔记十五之图片文字识别
- discuz建站视频教程 免费个人建站视频教程
- Linux 笔记 - 第十一章 正则表达式
- 《星科快报》2021.11.11何为NFT
热门文章
- 小程序-demo:快速开始
- 谷歌设置支持webgl
- Tomcat JVM参数配置和自启动配置
- [转]瀑布流布局浅析
- 清除VS2005中的最近项目
- cocos2d-x新手学习之Helloworld(第三篇)[版本号:cocos2d-x-3.1.1]
- Android常用工具类 (转)
- Java语言实现查找两个字符串的最大公共字串
- [web]EL表达式失效
- manifest.json文件的 “name” “description” “version 字段解释