首页 > 其他 > 详细

剑指offer57-二叉树的下一个结点

时间:2020-12-13 15:14:51      阅读:19      评论:0      收藏:0      [点我收藏+]

题目描述

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

知识点回顾

代码

解法一:暴力循环

  1. 根据给出的结点求出整棵树的根节点
  2. 根据根节点递归求出树的中序遍历,存入vector
  3. 在vector中查找当前结点,则当前结点的下一结点即为所求。
# -*- 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 None
        tmp=pNode
        while tmp.next:                                #找到树的根节点
            tmp=tmp.next
        a=[]
        self.in_search(tmp,a)
        #if a.index(pNode)+1<=len(a)-1:
        #    return a[a.index(pNode)+1]
        #return None
        try:
            return a[a.index(pNode)+1]
        except:
            return None

    def in_search(self,tree,a):                  #注意这里有递归,所以不要在函数里定义a=[]
        if not tree:
            return None
        self.in_search(tree.left,a)
        a.append(tree)
        self.in_search(tree.right,a)

解法二:具体情况具体分析

 

 

剑指offer57-二叉树的下一个结点

原文:https://www.cnblogs.com/foolangirl/p/14126408.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!