二叉搜索树与双向链表(中等,分治)

题目描述
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
说明:本题目包含复杂数据结构TreeNode,点此查看相关信息

/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
    
    
vector<TreeNode*>t;
void sol(TreeNode* root)
{
    
    
    if(root->left) sol(root->left);
    t.push_back(root);
    if(root->right) sol(root->right);
}
public:
    TreeNode* Convert(TreeNode* pRootOfTree) {
    
    
        if(pRootOfTree==NULL) return NULL;
        sol(pRootOfTree);
        for(int i=0;i<t.size()-1;i++)
        {
    
    
            t[i]->right=t[i+1];
            t[i+1]->left=t[i];
        }
        return t[0];
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43540515/article/details/114366325