701. 二叉搜尋樹中的插入操作
阿新 • • 發佈:2022-02-24
深度優先搜尋
class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { if (root == null){ return new TreeNode(val); } if (root.val > val){ root.left = insertIntoBST(root.left, val); return root; } else { root.right = insertIntoBST(root.right, val); return root; } } } /** * 時間複雜度 O(n) * 空間複雜度 O(n) */
迭代
class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { if (root == null){ return new TreeNode(val); } /** * 插入元素需要用到父節點,因此用prev指標指向父節點 */ TreeNode newRoot = root; TreeNode prev = null; while (root != null){ prev = root; if (root.val > val){ root = root.left; } else { root = root.right; } } if (prev.val > val){ prev.left = new TreeNode(val); } else { prev.right = new TreeNode(val); } return newRoot; } } /** * 時間複雜度 O(n) * 空間複雜度 O(1) */
https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/