题解 | #二叉搜索树与双向链表#
二叉搜索树与双向链表
http://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5
- 不能new新的节点,但是可以保存这些中序遍历的节点。
- 由于需要消耗脑力建立的函数别忘了最后的调用。因此推荐先写出一个函数,然后在定义。
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: vector<TreeNode*> nodes; void inorder(TreeNode* node){ if(!node){ return; } inorder(node->left); nodes.push_back(node); inorder(node->right); } TreeNode* Convert(TreeNode* pRootOfTree) { if(!pRootOfTree) return pRootOfTree; inorder(pRootOfTree); for(int i = 0; i< nodes.size()-1;i++){ nodes[i]->right = nodes[i+1]; nodes[i+1]->left = nodes[i]; } return nodes[0]; } };
剑指Offer 文章被收录于专栏
剑指offer的解析结合