[回复]
[修改] [删除]
[返回版面]
|
1 |
作者: iamserious, 讨论版: 本站建设, 发表时间: 2013-09-10 08:04:08 PST
标题: 貌似很不稳定
关键字: 不稳定
在做20题 recover binary search tree
同样的code,有时候能过,大部分时候是超时;
代码如下:
class Solution {
public:
void recoverBST(TreeNode *root) {
if (root == NULL) {
return;
}
TreeNode* first = NULL;
TreeNode* second = NULL;
TreeNode* pre = NULL;
inorder(root, pre, first, second);
if (first != NULL && second != NULL) {
int tmp = first->val;
first->val = second->val;
second->val = tmp;
}
}
void inorder(TreeNode* node, TreeNode*& pre,
TreeNode*& first, TreeNode*& second) {
if (node == NULL) {
return;
}
if (node->left != NULL) {
inorder(node->left, pre, first, second);
}
if (pre != NULL && pre->val > node->val) {
if (first == NULL) {
first = pre;
}
second = node;
}
pre = node;
if (node->right != NULL) {
inorder(node->right, pre, first, second);
}
}
};
--
※ 来源: homecox.com [来自: 112.]
|
|
|