题解 | #二叉树的下一个结点#
二叉树的下一个结点
https://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
import java.util.*;
/*
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.next == null && pNode.left == null && pNode.right == null)return null;
TreeLinkNode node = pNode;
List<TreeLinkNode> list = new ArrayList<>();
while (node.next != null) {
node = node.next;
}
vinOrder(node, list);
for (int i = 0; i < list.size() - 1; i++) {
if (list.get(i).val == pNode.val) {
return list.get(i + 1);
}
}
return null;
}
public void vinOrder(TreeLinkNode node, List<TreeLinkNode> list) {
if (node == null) {
return;
}
vinOrder(node.left, list);
list.add(node);
vinOrder(node.right, list);
return;
}
}
查看4道真题和解析