剑指Offer—57—二叉树的下一个节点

来源:互联网 发布:生成app网站源码 编辑:程序博客网 时间:2024/05/22 05:05

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

package A59二叉树的下一个结点;class TreeLinkNode {    int val;    TreeLinkNode left = null;    TreeLinkNode right = null;    TreeLinkNode next = null;    TreeLinkNode(int val) {        this.val = val;    }}public class Solution {    //if 当前节点有右孩子,那么直接返回右孩子的最左子孩子    //else 当前节点没有右孩子    //    if 当前节点是父节点的左子树,返回父节点    //    else 当前节点是父节点的右子树,那么下一个节点就是找他的父节点,    //         只有他的父节点是父节点的父节点的左子树时返回    public TreeLinkNode GetNext(TreeLinkNode pNode) {        if (pNode == null){            return null;        }        if (pNode.right != null){   //            pNode = pNode.right;            while (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