二叉搜索树与双向链表

2020-07-29  本文已影响0人  Crazy_Bear
/*
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);
      }
};
上一篇 下一篇

猜你喜欢

热点阅读