- 最近公共父节点(两个节点,都可能为null,都可能不在树上。)
public static TreeNode getParent(TreeNode root, TreeNode node1,TreeNode node2) {
if(root == null || node1 == null || node2 == null) return null;
//这里可以换成if(root == node1 || root == node2),我只是为了方便测试才这样写
if(root.val == node1.val || root.val == node2.val) return root;
TreeNode left = getParent(root.left,node1,node2);
TreeNode right = getParent(root.right,node1,node2);
//如果左右子树都能找到,那么当前节点就是最近的公共祖先节点
if(left != null && right != null) return root;
//如果左子树上没有,那么返回右子树的查找结果
if(left == null) return right;
//否则返回左子树的查找结果
else return left;
}
func reverseList02(_ head:ListNode?) -> ListNode? {
if head == nil || head?.next == nil {
return head
}
let temp = head?.next
let newHead:ListNode? = reverseList02(temp)
temp?.next = head
head?.next = nil
return newHead
}