public static TreeNode getNext(TreeNode node){
if(node == null){
return null;
}
TreeNode temp = node.right;
TreeNode nextNode;
//如果一个节点有右子树
if(temp != null){
while(temp.left != null){
temp = temp.left;
}
nextNode = temp;
}
//如果一个节点没有右子树,且是它父节点的左子节点
else if(node.right == null && node.next != null && node.next.left == node){
nextNode = node.next;
}else { //没有右子树,并且还是其父节点的右子节点
temp = node.next;
while(temp != null && temp.next != null && temp.next.left != temp){
temp = temp.next;
}
//注意要判断temp != null,如果只有一个节点时temp=null,直接temp.next会出现NullPointerException
if(temp != null && temp.next != null){
nextNode = temp.next;
}else{
nextNode = null;
}
}
return nextNode;
}
8 二叉树的下一个节点
最新推荐文章于 2024-02-04 09:37:29 发布