26.分解让复杂问题简单:二叉搜索树与双向链表
题目描述:
27.分解让复杂问题简单:字符串的排列
题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
解法思路:中序遍历即可。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
TreeNode* Convert(TreeNode* pRootOfTree) {
if (!pRootOfTree)
return NULL;
TreeNode* pre = NULL;
InOrder(pRootOfTree, pre);
TreeNode* result = pRootOfTree;
while (result->left)
result = result->left;
return result;
}
void InOrder(TreeNode* p, TreeNode* &pre) {
if (!p)
return;
if (p->left)
InOrder(p->left, pre);
p->left = pre;
if (pre)
pre->right = p;
pre = p;
if (p->right)
InOrder(p->right, pre);
}
};
注意:
void InOrder(TreeNode* p, TreeNode* &pre)
此处必须传引用类型的&pre,否则结果将出错。
28.时间效率:数组中出现次数超过一半的数字
题目描述:
29.时间效率:最小的K个数
题目描述:
30.时间效率:连续子数组的最大和
题目描述: