树-二叉树中某个节点的下一个节点

来源:互联网 发布:中国网络神兽排 编辑:程序博客网 时间:2024/06/04 23:13

问题描述:

给定一个二叉树,查找某个节点的下一个节点

思考:略

代码(java):

public class FindNextNode {static class Node{private int val;private Node left;private Node right;private Node parent;public Node(int val) {this.val = val;}@Overridepublic String toString() {return val + "";} }public static Node findNextNode(Node thisNode){if (thisNode == null) {return null;}Node next = null;//1,节点有右子树,那么它的下一个节点就是它右子树最左节点if(thisNode.right != null){next = thisNode.right;while(next.left != null){next = next.left;}return next;}//2,节点没有右子树,他是父节点的左儿子,下一个节点就是父节点if(thisNode.right == null || thisNode.parent.left == thisNode){return thisNode.parent;}//3,,节点没有右子树,他是父节点的右儿子,那么使用parent指针知道找到一个节点,这个节点是它父亲的左节点,那么next为这个节点的父亲//next == null是找到根的时候,所以就没有下一个节点if(thisNode.right == null || thisNode.parent.right == thisNode){next = thisNode;while(next.parent.left != next || next != null){next = next.parent;}return next;}return next;}}


0 0