二叉搜索树和双向链表

二叉搜索树与双向链表

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);
    }
};
全部评论

相关推荐

01-14 12:08
门头沟学院 Java
神哥了不得:(非引流)1.既然发出来了简历,就稍微提一点点小建议,确实简历很不错了,练手项目可以换一些质量高的,工作内容,可以加上一些量化指标,比如第一条系统响应速度由多少变成多少,减少了百分之多少,第4条就很不错。2.广投,年前实习招募比较少了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务