平衡二叉搜索树BST转换为双向链表
来源:互联网 发布:matlab 图像融合算法 编辑:程序博客网 时间:2024/04/30 18:32
递归做法:
- 分别将BST的左、右子树转换成双向链表
- new出一个链表节点,值等于BST根节点的值
- 由于是BST,所以new出的节点应该位于链表的中间,所以分别连接左、右子树转换成的链表。这一步中须要找到左链表的尾节点。
对于一些细节处理,要加上必要的判空语句(链表节点为空时,不能访问它)
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } * Definition of Doubly-ListNode * class DoublyListNode { * public: * int val; * DoublyListNode *next, *prev; * DoublyListNode(int val) { * this->val = val; this->prev = this->next = NULL; * } * } */class Solution {public: /** * @param root: The root of tree * @return: the head of doubly list node */ DoublyListNode* bstToDoublyList(TreeNode* root) { if (!root) return NULL; DoublyListNode *left = bstToDoublyList(root->left); DoublyListNode *right = bstToDoublyList(root->right); DoublyListNode *left_tail = left; while (left_tail && left_tail->next) left_tail = left_tail->next; DoublyListNode *cur = new DoublyListNode(root->val); cur->prev = left_tail; if (left_tail) left_tail->next = cur; cur->next = right; if (right) right->prev = cur; if (left) return left; else return cur; }};
0 0
- 平衡二叉搜索树BST转换为双向链表
- 有序链表转换为平衡二叉树(BST)
- 有序单向链表转换为平衡搜索二叉树
- 二叉搜索树转换为双向链表
- diary5(二叉搜索树转换为双向链表)
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为有序双向链表
- java之二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为有序双向链表
- 将二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- 搜索二叉树转换为双向链表
- 二叉搜索树转换为有序双向链表
- 二叉搜索树转换为双向链表
- 二叉搜索树转换为双向链表
- Android感应检测Sensor
- 排序算法(php学习整理篇)
- Charles使用
- 反射的相关教学
- 安全上下文
- 平衡二叉搜索树BST转换为双向链表
- 【7】汇编 DOS部分
- 指针数组VS指向数组的指针
- GYM 100090 A. After Two Hares(水~)
- 系统存在大量TIME_WAIT状态的连接解决方法。
- JAVA中this
- (16)Air Band OpenCV2.4.13_离散傅里叶变换
- .bss .data .text 区别
- AAVCAssembler::submitAccessUnit