二叉搜索树和双向链表

二叉搜索树与双向链表

http://www.nowcoder.com/questionTerminal/947f6eb80d944a84850b0538bf0ec3a5

二叉搜索树转换为排序双向链表,需利用二叉搜索树的特点:
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
则中序遍历序列即为有序的。

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    TreeNode* pre=nullptr;
    TreeNode* Convert(TreeNode* pRootOfTree) {
        TreeNode* root=pRootOfTree;
        while(root&&root->left){
            root=root->left;
        }
        inorder(pRootOfTree);
        return root;
    }
    void inorder(TreeNode* root){
        if(!root)
            return;
        inorder(root->left);
        root->left=pre;
        if(pre){
            pre->right=root;
        }
        pre=root;
        inorder(root->right);
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-23 18:30
美团优选内容调整,屁股都没离开座椅呢,多多买菜来挖了
熬夜脱发码农:哈,拼多多真挖人是吧
投递美团等公司9个岗位 >
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务