LeetCode 897 Increasing Order Search Tree
給定一顆二叉搜尋樹,重新進行排序,使其根節點是最小值,且每個節點都沒有左子樹,只有一個右子樹,最終還要保持該樹是一顆二叉搜尋樹.
例 1: 給予樹: 5 / \ 36 / \\ 248 // \ 179 輸出: 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8 \ 9
解法
使用中序遍歷即可。
/** * Definition for a binary tree node. * public class TreeNode { *int val; *TreeNode left; *TreeNode right; *TreeNode(int x) { val = x; } * } */ class Solution { private TreeNode result = new TreeNode(0); private TreeNode dummy = result; public TreeNode increasingBST(TreeNode root) { if (root == null) { return null; } increasingBST(root.left); dummy.right = new TreeNode(root.val); dummy = dummy.right; increasingBST(root.right); return result.right; } }
Runtime: 2 ms, faster than 99.97% of Java online submissions for Increasing Order Search Tree. Memory Usage: 44.9 MB, less than 59.39% of Java online submissions for Increasing Order Search Tree.