怎么把leetcode的输入转换成TreeNode?
来源:7-7 二分搜索树中的问题 Lowest Common Ancestor of a Binary Search Tree
慕桂英雄
2019-06-23
其实我就是想在刷二叉树这类题的时候,能在本地测试。。
但是leetcode的一般的例子都是数组形式的TreeNode: [1,2,3,null]…
本地测的时候一般是 res = Solution().solve(TreeNode xx)
先要把这个数组转为TreeNode,
生成TreeNode现在我就是傻瓜式的一个个节点的生成。然后接起来。。。。效率很低。
所以一般最多测一个TreeNode。
遇到复杂的问题经常有10个红色提交才能换来一次Pass。。
出了TreeNode问题,其他问题的本地测试就很简单,字符串或者数组可以直接复制就行了。。
2回答
-
liuyubobobo
2019-06-24
这个问题其实完全是Leetcode上的297号问题:
https://leetcode.com/problems/serialize-and-deserialize-binary-tree/
有兴趣可以先自己做一下。其中的deserialize做的事情就是将数组转成树结构。
我的思路可以参考这里(C++):https://github.com/liuyubobobo/Play-Leetcode/tree/master/0297-Serialize-and-Deserialize-Binary-Tree/cpp-0297
另外,对于测试来说,很多时候,用极小的树结构就可以debug出问题的根源。debug本身也讲究找到能复现错误的最小测试用例,方便调试。所以,很多时候,我使用这个main函数中的方式做测试或者debug,看起来很笨,但其实,我的体验是,更高效:)
继续加油!:)
10 -
碳晚揽月
2019-07-01
也可以用前序遍历和中序遍历来直接构建一棵二叉树,我在GitHub上提交了一个简单的实现,写得不好,不过也能用
.cpp:https://github.com/FeiZhao0531/PlayLeetCode/blob/master/BinaryTree-Recursion/BinaryTree.cpp
.h : https://github.com/FeiZhao0531/PlayLeetCode/blob/master/BinaryTree-Recursion/BinaryTree.h
012019-07-01
相似问题