剑指offer--二叉树的下一个节点

来源:互联网 发布:java调用url接口 编辑:程序博客网 时间:2024/06/03 15:07
题目描述

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


package 从50题数组中重复的数字开始;public class 二叉树的下一个节点 {public class TreeLinkNode {    int val;    TreeLinkNode left = null;    TreeLinkNode right = null;    TreeLinkNode next = null;    TreeLinkNode(int val) {        this.val = val;    }}public static void main(String[] args) {// TODO Auto-generated method stub}    public TreeLinkNode GetNext(TreeLinkNode pNode)    {    if (pNode==null) {return null;}    TreeLinkNode temp = null;    //如果有右孩子    if (pNode.right!=null) {temp = pNode.right;while (temp.left!=null) {temp=temp.left;}return temp;}    //没有右孩子,遍历父节点;根节点;    if (pNode.next!=null) {    //当前节点是其父节点的左节点。if (pNode.next.left==pNode) {return pNode.next;}else {temp = pNode.next;while (temp.next!=null&&temp.next.left!=temp) {temp = temp .next;}if (temp.next==null) {return null;}else {return temp.next;}}}return null;    }}


原创粉丝点击