1 Star 0 Fork 0

geekplayers/Leetcode-301-600

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
Interval.java
ListNode.java
Node.java
README.md
TreeNode.java
_301_RemoveInvalidParentheses.java
_302_SmallestRectangleEnclosingBlackPixels.java
_303_RangeSumQueryImmutable.java
_304_RangeSumQuery2DImmutable.java
_305_NumberofIslandsII.java
_306_AdditiveNumber.java
_307_RangeSumQueryMutable.java
_308_RangeSumQuery2DMutable.java
_309_BestTimetoBuyandSellStockwithCooldown.java
_310_MinimumHeightTrees.java
_311_SparseMatrixMultiplication.java
_312_BurstBalloons.java
_313_SuperUglyNumber.java
_314_BinaryTreeVerticalOrderTraversal.java
_315_CountofSmallerNumbersAfterSelf.java
_316_RemoveDuplicateLetters.java
_317_ShortestDistancefromAllBuildings.java
_318_MaximumProductofWordLengths.java
_319_BulbSwitcher.java
_320_GeneralizedAbbreviation.java
_321_CreateMaximumNumber.java
_322_CoinChange.java
_323_NumberofConnectedComponentsinanUndirectedGraph.java
_324_WiggleSortII.java
_325_MaximumSizeSubarraySumEqualsk.java
_326_PowerofThree.java
_327_CountofRangeSum.java
_328_OddEvenLinkedList.java
_329_LongestIncreasingPathinaMatrix.java
_330_PatchingArray.java
_331_VerifyPreorderSerializationofaBinaryTree.java
_332_ReconstructItinerary.java
_333_LargestBSTSubtree.java
_334_IncreasingTripletSubsequence.java
_335_SelfCrossing.java
_336_PalindromePairs.java
_337_HouseRobberIII.java
_338_CountingBits.java
_339_NestedListWeightSum.java
_340_LongestSubstringwithAtMostKDistinctCharacters.java
_341_FlattenNestedListIterator.java
_342_PowerofFour.java
_343_IntegerBreak.java
_344_ReverseString.java
_345_ReverseVowelsofaString.java
_346_MovingAveragefromDataStream.java
_347_TopKFrequentElements.java
_348_DesignTicTacToe.java
_349_IntersectionofTwoArrays.java
_350_IntersectionofTwoArraysII.java
_351_AndroidUnlockPatterns.java
_352_DataStreamasDisjointIntervals.java
_353_DesignSnakeGame.java
_354_RussianDollEnvelopes.java
_355_DesignTwitter.java
_356_LineReflection.java
_357_CountNumberswithUniqueDigits.java
_358_RearrangeStringkDistanceApart.java
_359_LoggerRateLimiter.java
_360_SortTransformedArray.java
_361_BombEnemy.java
_362_DesignHitCounter.java
_363_MaxSumofRectangleNoLargerThanK.java
_364_NestedListWeightSumII.java
_365_WaterandJugProblem.java
_366_FindLeavesofBinaryTree.java
_367_ValidPerfectSquare.java
_368_LargestDivisibleSubset.java
_369_PlusOneLinkedList.java
_370_RangeAddition.java
_371_SumofTwoIntegers.java
_372_SuperPow.java
_373_FindKPairswithSmallestSums.java
_374_GuessNumberHigherorLower.java
_375_GuessNumberHigherorLowerII.java
_376_WiggleSubsequence.java
_377_CombinationSumIV.java
_378_KthSmallestElementinaSortedMatrix.java
_379_DesignPhoneDirectory.java
_380_InsertDeleteGetRandom.java
_381_InsertDeleteGetRandomDuplicatesallowed.java
_382_LinkedListRandomNode.java
_383_RansomNote.java
_384_ShuffleanArray.java
_385_MiniParser.java
_386_LexicographicalNumbers.java
_387_FirstUniqueCharacterinaString.java
_388_LongestAbsoluteFilePath.java
_389_FindtheDifference.java
_390_EliminationGame.java
_391_PerfectRectangle.java
_392_IsSubsequence.java
_393_UTF8Validation.java
_394_DecodeString.java
_395_LongestSubstringwithAtLeastKRepeatingCharacters.java
_396_RotateFunction.java
_397_IntegerReplacement.java
_398_RandomPickIndex.java
_399_EvaluateDivision.java
_400_NthDigit.java
_401_BinaryWatch.java
_402_RemoveKDigits.java
_403_FrogJump.java
_404_SumofLeftLeaves.java
_405_ConvertaNumbertoHexadecimal.java
_406_QueueReconstructionbyHeight.java
_407_TrappingRainWaterII.java
_408_ValidWordAbbreviation.java
_409_LongestPalindrome.java
_410_SplitArrayLargestSum.java
_411_MinimumUniqueWordAbbreviation.java
_412_FizzBuzz.java
_413_ArithmeticSlices.java
_414_ThirdMaximumNumber.java
_415_AddStrings.java
_416_PartitionEqualSubsetSum.java
_417_PacificAtlanticWaterFlow.java
_418_SentenceScreenFitting.java
_419_BattleshipsinaBoard.java
_420_StrongPasswordChecker.java
_421_MaximumXORofTwoNumbersinanArray.java
_422_ValidWordSquare.java
_423_ReconstructOriginalDigitsfromEnglish.java
_424_LongestRepeatingCharacterReplacement.java
_425_WordSquares.java
_425_WordSquares2.java
_426_ConvertBinarySearchTreetoSortedDoublyLinkedList.java
_427_ConstructQuadTree.java
_428_SerializeandDeserializeNaryTree.java
_429_NaryTreeLevelOrderTraversal.java
_430_FlattenaMultilevelDoublyLinkedList.java
_431_EncodeNaryTreetoBinaryTree.java
_432_AllOoneDataStructure.java
_433_MinimumGeneticMutation.java
_434_NumberofSegmentsinaString.java
_435_NonoverlappingIntervals.java
_436_FindRightInterval.java
_437_PathSumIII.java
_438_FindAllAnagramsinaString.java
_439_TernaryExpressionParser.java
_440_KthSmallestinLexicographicalOrder.java
_441_ArrangingCoins.java
_442_FindAllDuplicatesinanArray.java
_443_StringCompression.java
_444_SequenceReconstruction.java
_444_SequenceReconstruction2.java
_445_AddTwoNumbersII.java
_446_ArithmeticSlicesIISubsequence.java
_447_NumberofBoomerangs.java
_448_FindAllNumbersDisappearedinanArray.java
_449_SerializeandDeserializeBST.java
_450_DeleteNodeinaBST.java
_451_SortCharactersByFrequency.java
_452_MinimumNumberofArrowstoBurstBalloons.java
_453_MinimumMovestoEqualArrayElements.java
_454_FourSumII.java
_455_AssignCookies.java
_456_132Pattern.java
_457_CircularArrayLoop.java
_458_PoorPigs.java
_459_RepeatedSubstringPattern.java
_460_LFUCache.java
_461_HammingDistance.java
_462_MinimumMovestoEqualArrayElementsII.java
_463_IslandPerimeter.java
_464_CanIWin.java
_465_OptimalAccountBalancing.java
_466_CountTheRepetitions.java
_467_UniqueSubstringsinWraparoundString.java
_468_ValidateIPAddress.java
_469_ConvexPolygon.java
_470_ImplementRand10UsingRand7.java
_471_EncodeStringwithShortestLength.java
_472_ConcatenatedWords.java
_472_ConcatenatedWords2.java
_473_MatchstickstoSquare.java
_474_OnesandZeroes.java
_475_Heaters.java
_476_NumberComplement.java
_477_TotalHammingDistance.java
_478_GenerateRandomPointinaCircle.java
_479_LargestPalindromeProduct.java
_480_SlidingWindowMedian.java
_480_SlidingWindowMedian2.java
_481_MagicalString.java
_482_LicenseKeyFormatting.java
_483_SmallestGoodBase.java
_484_FindPermutation.java
_485_MaxConsecutiveOnes.java
_486_PredicttheWinner.java
_487_MaxConsecutiveOnesII.java
_488_ZumaGame.java
_489_RobotRoomCleaner.java
_490_TheMaze.java
_491_IncreasingSubsequences.java
_492_ConstructTheRectangle.java
_493_ReversePairs.java
_494_TargetSum.java
_495_TeemoAttacking.java
_496_NextGreaterElementI.java
_497_RandomPointinNonoverlappingRectangles.java
_498_DiagonalTraverse.java
_499_TheMazeIII.java
_499_TheMazeIII2.java
_500_KeyboardRow.java
_501_FindModeinBinarySearchTree.java
_502_IPO.java
_503_NextGreaterElementII.java
_504_Base7.java
_505_TheMazeII.java
_506_RelativeRanks.java
_507_PerfectNumber.java
_508_MostFrequentSubtreeSum.java
_509_FibonacciNumber.java
_513_FindBottomLeftTreeValue.java
_514_FreedomTrail.java
_515_FindLargestValueinEachTreeRow.java
_516_LongestPalindromicSubsequence.java
_517_SuperWashingMachines.java
_518_CoinChange2.java
_519_RandomFlipMatrix.java
_520_DetectCapital.java
_521_LongestUncommonSubsequenceI.java
_522_LongestUncommonSubsequenceII.java
_523_ContinuousSubarraySum.java
_524_LongestWordinDictionarythroughDeleting.java
_525_ContiguousArray.java
_526_BeautifulArrangement.java
_527_WordAbbreviation.java
_527_WordAbbreviation2.java
_528_RandomPickwithWeight.java
_529_Minesweeper.java
_530_MinimumAbsoluteDifferenceinBST.java
_531_LonelyPixelI.java
_532_KdiffPairsinanArray.java
_533_LonelyPixelII.java
_535_EncodeAndDecodeTinyURL.java
_536_ConstructBinaryTreefromString.java
_537_ComplexNumberMultiplication.java
_538_ConvertBSTtoGreaterTree.java
_539_MinimumTimeDifference.java
_540_SingleElementinaSortedArray.java
_541_ReverseStringII.java
_542_01Matrix.java
_543_DiameterofBinaryTree.java
_544_OutputContestMatches.java
_545_BoundaryofBinaryTree.java
_546_RemoveBoxes.java
_547_FriendCircles.java
_548_SplitArraywithEqualSum.java
_549_BinaryTreeLongestConsecutiveSequenceII.java
_551_StudentAttendanceRecordI.java
_552_StudentAttendanceRecordII.java
_553_OptimalDivision.java
_554_BrickWall.java
_555_SplitConcatenatedStrings.java
_556_NextGreaterElementIII.java
_557_ReverseWordsinaStringIII.java
_558_QuadTreeIntersection.java
_559_MaximumDepthofNaryTree.java
_560_SubarraySumEqualsK.java
_561_ArrayPartitionI.java
_562_LongestLineofConsecutiveOneinMatrix.java
_562_LongestLineofConsecutiveOneinMatrix2.java
_563_BinaryTreeTilt.java
_564_FindtheClosestPalindrome.java
_565_ArrayNesting.java
_566_ReshapetheMatrix.java
_567_PermutationinString.java
_568_MaximumVacationDays.java
_572_SubtreeofAnotherTree.java
_573_SquirrelSimulation.java
_575_DistributeCandies.java
_576_OutofBoundaryPaths.java
_581_ShortestUnsortedContinuousSubarray.java
_582_KillProcess.java
_583_DeleteOperationforTwoStrings.java
_587_ErecttheFence.java
_588_DesignInMemoryFileSystem.java
_589_NaryTreePreorderTraversal.java
_590_NaryTreePostorderTraversal.java
_591_TagValidator.java
_592_FractionAdditionandSubtraction.java
_593_ValidSquare.java
_594_LongestHarmoniousSubsequence.java
_598_RangeAdditionII.java
_599_MinimumIndexSumofTwoLists.java
_600_NonnegativeIntegerswithoutConsecutiveOnes.java
克隆/下载
_449_SerializeandDeserializeBST.java 2.16 KB
一键复制 编辑 原始数据 按行查看 历史
Cspiration 提交于 6年前 . Add files via upload
package leetcode_301To600;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
/**
* 本代码来自 Cspiration,由 @Cspiration 提供
* 题目来源:http://leetcode.com
* - Cspiration 致力于在 CS 领域内帮助中国人找到工作,让更多海外国人受益
* - 现有课程:Leetcode Java 版本视频讲解(1-900题)(上)(中)(下)三部
* - 算法基础知识(上)(下)两部;题型技巧讲解(上)(下)两部
* - 节省刷题时间,效率提高2-3倍,初学者轻松一天10题,入门者轻松一天20题
* - 讲师:Edward Shi
* - 官方网站:https://cspiration.com
* - 版权所有,转发请注明出处
*/
public class _449_SerializeandDeserializeBST {
/**
*
5
/ \
4 6
/ \
1 8
time : O(n);
space : O(n);
* @param root
* @return
*/
// Encodes a tree to a single string.
public String serialize(TreeNode root) {
if (root == null) return "";
StringBuilder res = new StringBuilder();
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()) {
TreeNode cur = stack.pop();
res.append(cur.val + " ");
if (cur.right != null) stack.push(cur.right);
if (cur.left != null) stack.push(cur.left);
}
return res.toString();
}
// Decodes your encoded data to tree.
public TreeNode deserialize(String data) {
if (data == "") return null;
String[] str = data.split(" ");
Queue<Integer> queue = new LinkedList<>();
for (String s : str) {
queue.offer(Integer.parseInt(s));
}
return getNode(queue);
}
public TreeNode getNode(Queue<Integer> queue) {
if (queue.isEmpty()) return null;
TreeNode root = new TreeNode(queue.poll());
Queue<Integer> smallerQ = new LinkedList<>();
while (!queue.isEmpty() && queue.peek() < root.val) {
smallerQ.offer(queue.poll());
}
root.left = getNode(smallerQ);
root.right = getNode(queue);
return root;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/geekplayers/Leetcode-301-600.git
git@gitee.com:geekplayers/Leetcode-301-600.git
geekplayers
Leetcode-301-600
Leetcode-301-600
master

搜索帮助