博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树的下一个结点
阅读量:3964 次
发布时间:2019-05-24

本文共 894 字,大约阅读时间需要 2 分钟。

题目描述

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

思路

若当前结点有右子树,中序遍历下一结点为右子树的最左结点。若当前结点无右子树,且是其父结点的左子树,则中序遍历下一结点为其父结点。若当前结点无右子树,且是其父结点的右子树,则验证其父结点的中序遍历下一结点。

时间复杂度O(n),空间复杂度O(1)。

代码

/*public class TreeLinkNode {    int val;    TreeLinkNode left = null;    TreeLinkNode right = null;    TreeLinkNode next = null;    TreeLinkNode(int val) {        this.val = val;    }}*/public class Solution {    public TreeLinkNode GetNext(TreeLinkNode node) {        if(node == null)    return null;        if(node.right != null) {            node = node.right;            while(node.left != null) {                node = node.left;            }            return node;        }        while(node.next != null) {            if(node.next.left == node) {                return node.next;            }            node = node.next;        }        return null;    }}

笔记

向上验证父结点无需递归,while循环即可。

转载地址:http://kfuki.baihongyu.com/

你可能感兴趣的文章
Pandas 查看数据
查看>>
[第20课] 二项分布2
查看>>
感 冒
查看>>
职业瓶颈
查看>>
有些问题不一定要一次完成,有时候可以增加中间步骤
查看>>
Eclipse 常用快捷键
查看>>
DB2 系列文章目录
查看>>
DB2 认证路线图
查看>>
在FedaroCore4下安装DB2 Express-C
查看>>
DB2 目录结构
查看>>
DB2 配置
查看>>
DB2 CHNGPGS_THRES 参数
查看>>
DB2安全性概述
查看>>
DB2 用户管理
查看>>
DB2 脚本
查看>>
DB2 锁升级失败将引起死锁
查看>>
遇到问题该如何解决
查看>>
[第21课] 二项分布3
查看>>
[第22课] 二项分布4
查看>>
Pandas 筛选数据
查看>>