当前位置: 代码迷 >> 综合 >> 剑指offer-26 -- 二叉搜索树与双向链表 - C++
  详细解决方案

剑指offer-26 -- 二叉搜索树与双向链表 - C++

热度:49   发布时间:2024-02-21 23:50:17.0

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

中序遍历二叉树,然后用一个vector保存遍历的结果,这样在vector中节点就按顺序保存了,然后再来修改指针,虽然没有一点技术含量,但是最后竟然还通过了

class Solution {
public:void get_list(TreeNode* pRootOfTree, vector<TreeNode*>& list){if(pRootOfTree->left != NULL)get_list(pRootOfTree->left, list);list.push_back(pRootOfTree);if(pRootOfTree->right != NULL)get_list(pRootOfTree->right, list);}TreeNode* get_ret(vector<TreeNode*>& list){for(int i=0; i<list.size()-1; i++){list[i]->right = list[i+1];list[i+1]->left = list[i];}return list[0];}TreeNode* Convert(TreeNode* pRootOfTree){if(pRootOfTree == NULL)return NULL;vector<TreeNode*> list;get_list(pRootOfTree, list);return get_ret(list);}
};

 

  相关解决方案