我的代码如下
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int getMinimumDifference(TreeNode root) {
TreeNode res = new TreeNode(Integer.MAX_VALUE);
TreeNode pre = null;
inOrder(root, res, pre);
return res.val;
}
private void inOrder(TreeNode node, TreeNode k, TreeNode pre) {
if (node==null) return;
inOrder(node.left, k, pre);
if (pre!=null) k.val = Math.min(k.val, node.val-pre.val);
pre = node;
inOrder(node.right, k, pre);
}
}
讨论区网友的代码如下
class Solution {
// do a inorder traversal
// compare current val with previous val
// update answer
private Integer prev;
private int ans;
public int getMinimumDifference(TreeNode root) {
ans = Integer.MAX_VALUE;
inorder(root);
return ans;
}
private void inorder(TreeNode root) {
if (root == null) return;
inorder(root.left);
if (prev != null)
ans = Math.min(ans, root.val - prev);
prev = root.val;
inorder(root.right);
}
}
部分测试通不过,自己实在找不出错误了,希望大家能帮忙看看。感激不尽
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.