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实现相关推荐

  1. 【Java数据结构】二叉树的前中后序遍历(递归和非递归)

    二叉树的遍历 递归做法 前序遍历 中序遍历 后序遍历 非递归 前序遍历 中序遍历 后序遍历 二叉树遍历是二叉树的一种重要操作 必须要掌握 二叉树的遍历可以用递归和非递归两种做法来实现 递归做法 前序遍 ...

  2. 判断整数序列是不是二元查找树的后序遍历结果

    题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果. 如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8 ...

  3. 9判断整数序列是不是二元查找树的后序遍历结果

    转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4252095.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...

  4. 二叉树的前中后序遍历(考试常考)

    二叉树遍历的概念 二叉树的遍历是按某种规则对二叉树的每个节点均只被访问一次,根据根节点访问位置的不同分为三种:先序遍历(根左右).中序遍历(左根右).后序遍历(左右根).         由于树是通过 ...

  5. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  6. 玩转二叉树 (25 分) 知中序遍历和前序遍历,求做个镜面反转后的层序遍历

    题目: 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第 ...

  7. 二元查找树的后序遍历结果

    题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回 true ,否则返回 false . 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: ...

  8. 建立二叉树:已知层次遍历顺序建立二叉树、已知先序遍历顺序建立二叉树

    其他二叉树知识!二叉树知识汇总 目录 前提知识: 约定: 二叉树节点的存储结构: 创建一个节点: 建立二叉树的几种方法: 一.已知先序遍历顺序,构建二叉树.(链式存储) 二.已知层次遍历顺序,构建二叉 ...

  9. 二叉树的前,中,后序遍历(思路分析) [Java][数据结构]

    二叉树的前,中,后序遍历(思路分析) 前序遍历: 先输出父节点, 再遍历左子树和右子树 中序遍历: 先遍历左子树, 再输出父节点,再遍历右子树 后序遍历: 先遍历左子树,再遍历右子树,最后输出父节点 ...

  10. 程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构]

    题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8   ...

最新文章

  1. Ubuntu下安装RabbitMQ
  2. Objective-C中常用转义字符
  3. bccomp在php中什么意思,PHP bccomp()用法及代码示例
  4. 小甲鱼 OllyDbg 教程系列 (十四) : 模态对话框 和 非模态对话框 之 URlegal 和 movgear
  5. [转载] python中print()函数的用法和end=““不换行详解
  6. 常见错误 不能打开注册表关键字
  7. IOS 文件管理 2
  8. SESSION和COOKIE的使用
  9. Reading HTML content from a UIWebView
  10. ubuntu 环境安装微信
  11. 电力行业安全建设方案
  12. 部队室内靶场有哪些硬件设备和强制性存在的系统
  13. Android 打开网络设置界面
  14. codeforces1463B. Find The Array
  15. 表现与数据分离、web语义化的理解
  16. Linux·工作队列
  17. 机器学习笔记十五之图片文字识别
  18. discuz建站视频教程 免费个人建站视频教程
  19. Linux 笔记 - 第十一章 正则表达式
  20. 《星科快报》2021.11.11何为NFT

热门文章

  1. 小程序-demo:快速开始
  2. 谷歌设置支持webgl
  3. Tomcat JVM参数配置和自启动配置
  4. [转]瀑布流布局浅析
  5. 清除VS2005中的最近项目
  6. cocos2d-x新手学习之Helloworld(第三篇)[版本号:cocos2d-x-3.1.1]
  7. Android常用工具类 (转)
  8. Java语言实现查找两个字符串的最大公共字串
  9. [web]EL表达式失效
  10. manifest.json文件的 “name” “description” “version 字段解释