您的位置:首页 > 理论基础 > 数据结构算法

二叉树的下一个结点

2016-03-18 23:14 531 查看


题目描述

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

/*

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 pNode)

    {

        if(pNode == null){

            return null;

        }

        //find right child's leftest child (if has right child) 

        if(pNode.right != null){

            pNode = pNode.right;

            while(pNode.left != null){

                pNode = pNode.left;

            }

            return pNode;

        }

        //if node is not root

        while(pNode.next != null){

            //find node it is parent's left child

            if(pNode == pNode.next.left){

                //return this node's parent

                return pNode.next;

            }

            pNode = pNode.next;

        }

        //node is root and it has not right child 

        return null;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构与算法