面试8题:

题目:二叉树的下一个节点

题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

解题思路:详见剑指offer P65页

解题代码:

# -*- coding:utf-8 -*-
# class TreeLinkNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# self.next = None
class Solution:
def GetNext(self, pNode):
# write code here
if not pNode:
return
#如果该节点有右子树,那么下一个节点就是它右子树中的最左节点
elif pNode.right!=None:
pNode=pNode.right
while pNode.left!=None:
pNode=pNode.left
return pNode #如果一个节点没有右子树,,并且它还是它父节点的右子节点
elif pNode.next!=None and pNode.next.right==pNode:
while pNode.next!=None and pNode.next.left!=pNode:
pNode=pNode.next
return pNode.next
#如果一个节点是它父节点的左子节点,那么直接返回它的父节点
else:
return pNode.next

最新文章

  1. TaskCompletionSource<TResult>
  2. iOS - Mac OS X 终端设置
  3. pingpang ball
  4. D - Cow Ski Area
  5. PAT (Advanced Level) 1071. Speech Patterns (25)
  6. HTML5和CSS3
  7. Android设置item的行间距,以及去掉分割线方法
  8. win7系统 LR11 安装与破解
  9. python 启动虚拟环境
  10. [转] 2016 JavaScript 发展现状大调查
  11. typescript 与 js 开发 react 的区别
  12. Mock Server 入门(一)
  13. 如何从零开始在github上新建项目
  14. [HAOI 2015]按位或
  15. 一个canvas的demo
  16. Java-简单的计算器(只能进行加法运算)
  17. FieldOffset
  18. 2-14-1 MySQL基础语句,查询语句
  19. leetcode-217-Contains Duplicate(使用排序来判断整个数组有没有重复元素)
  20. Unity —— 通过鼠标点击控制物体移动

热门文章

  1. Creating Icon Overlay Handlers / 创建图标标记 Handlers (续) / VC++, Windows, DLL, ATL, COM
  2. python-获取操作系统信息
  3. 《排序算法》——堆排序(大顶堆,小顶堆,Java)
  4. 程序的记事本--log4net
  5. ntp集群时间同步
  6. flask/sqlalchemy - OperationalError: (sqlite3.OperationalError) no such table
  7. js jQuery函数 $.ajax()
  8. 关于c中volatile关键字
  9. 微信 oauth4
  10. Linux文件类型及目录配置