二叉树的下一个节点(中序)

来源:互联网 发布:中兴软件南昌有限公司 编辑:程序博客网 时间:2024/05/27 21:04

题目描述

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

/*public class TreeLinkNode {    int val;    TreeLinkNode left = null;    TreeLinkNode right = null;    TreeLinkNode next = null;//父节点    TreeLinkNode(int val) {        this.val = val;    }}*//**1、有右子树的,那么下个结点就是右子树最左边的点;*2、没有右子树的,也可以分成两类,a)是父节点左孩子,那么父节点就是下一个节点 ;*b)是父节点的右孩子找他的父节点的父节点的父节点...*直到当前结点是其父节点的左孩子位置。如果没有,那么他就是尾节点。*/public class Solution {    public TreeLinkNode GetNext(TreeLinkNode pNode)    {        if(pNode == null) {            return null;        }        if(pNode.right != null) {            pNode = pNode.right;            while(pNode != null && pNode.left != null) {                pNode = pNode.left;            }            return pNode;        }        while(pNode.next != null) {            if(pNode.next.left == pNode) {                return pNode.next;            }            pNode = pNode.next;        }        return null;    }}


0 0