美文网首页
二叉搜索树与双向链表

二叉搜索树与双向链表

作者: Crazy_Bear | 来源:发表于2020-07-29 07:45 被阅读0次
  • 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
  • 中序遍历构建即可
  • 需要记录上一个指针作为下一个指针的prev
  • C++ 代码
/*
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 nullptr;
        TreeNode *lastNode = nullptr; 
         _convert(pRootOfTree,lastNode); 
        while(pRootOfTree->left){
            pRootOfTree = pRootOfTree->left;
        }
        return pRootOfTree;
    }
      void _convert(TreeNode* root,TreeNode * &lastNode){
        if(!root) return;
         _convert(root->left, lastNode);
         root->left = lastNode;
          if(lastNode)
          lastNode->right = root;
          lastNode = root;
          _convert(root->right, lastNode);
      }
};

相关文章

网友评论

      本文标题:二叉搜索树与双向链表

      本文链接:https://www.haomeiwen.com/subject/ocdjlktx.html