二叉樹查找樹中序後繼 · Inorder Successor in Binary Search Tree

[抄題]:node

給一個二叉查找樹以及一個節點,求該節點的中序遍歷後繼,若是沒有返回null算法

[思惟問題]:數據結構

不知道分合算法和後序節點有什麼關係:直接return表達式就好了,它本身會終止的。
ide

[一句話思路]:spa

比root大時直接扔右邊遞歸,比root小時 考慮是左邊遞歸仍是就是rootcode

[輸入量]:空: 正常狀況:特大:特小:程序裏處理到的特殊狀況:異常狀況(不合法不合理的輸入):blog

[畫圖]:遞歸

 

[一刷]:it

  1. 要定義left節點,留着作後續的比較

[二刷]: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;
        }
    }
}
View Code
相關文章
相關標籤/搜索