[抄題]:node
給一個二叉查找樹以及一個節點,求該節點的中序遍歷後繼,若是沒有返回null
算法
[思惟問題]:數據結構
不知道分合算法和後序節點有什麼關係:直接return表達式就好了,它本身會終止的。
ide
[一句話思路]:spa
比root大時直接扔右邊遞歸,比root小時 考慮是左邊遞歸仍是就是rootcode
[輸入量]:空: 正常狀況:特大:特小:程序裏處理到的特殊狀況:異常狀況(不合法不合理的輸入):blog
[畫圖]:遞歸
[一刷]:it
[二刷]:io
[三刷]:
[四刷]:
[五刷]:
[總結]:
[複雜度]:Time complexity: O(n) Space complexity: O(n)
[英文數據結構或算法,爲何不用別的數據結構或算法]:
就是樹。
遞歸表達式,直接出結果。
[其餘解法]:
太麻煩了
[Follow Up]:
[LC給出的題目變變變]:
鎖着了
public class Solution { /* * @param root: The root of the BST. * @param p: You need find the successor node of p. * @return: Successor of p. */ public TreeNode inorderSuccessor(TreeNode root, TreeNode p) { if (root == null || p == null) { return null; } if (p.val >= root.val) { return inorderSuccessor(root.right, p); } else { TreeNode left = inorderSuccessor(root.left, p); return (left != null) ? left : root; } } }