题目介绍
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。
具体题目可点击此处进行查看!
C++程序
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
void inOrder(TreeNode* root, vector<TreeNode*>& inorderTree)
{
if(root == NULL)
return;
inOrder(root->left, inorderTree);
inorderTree.push_back(root);
inOrder(root->right, inorderTree);
}
TreeNode* Convert(TreeNode* pRootOfTree) {
if(pRootOfTree == NULL)
return NULL;
vector<TreeNode*> inorderTree;
inOrder(pRootOfTree, inorderTree);//先进行中序遍历,实现将二叉搜索树排序后的数存于数组中
TreeNode* ans;
ans = inorderTree[0];
for(int i = 0; i < inorderTree.size(); i++)
{
TreeNode* cur = inorderTree[i];
if(i > 0)
cur->left = inorderTree[i-1];
if(i < inorderTree.size() - 1)
cur->right = inorderTree[i+1];
}
return ans;
}
};