1. 程式人生 > >將二叉查找樹轉換成雙鏈表

將二叉查找樹轉換成雙鏈表

val temp node return 一個 給定 雙向 order write

將一個二叉查找樹按照中序遍歷轉換成雙向鏈表

樣例

給定一個二叉查找樹:

4
/ \
2 5
/ \
1 3

返回 1<->2<->3<->4<->5

/**
 * 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* list = NULL; DoublyListNode* bstToDoublyList(TreeNode* root) { // Write your code here if (root == NULL) return NULL; inorder(root);
while (list->prev != NULL) list = list->prev; return list; } void inorder(TreeNode* root) { if (root->left != NULL) inorder(root->left); DoublyListNode* temp = new DoublyListNode(root->val); if (list == NULL) { list = temp; }
else if (list != NULL) { list->next = temp; temp->prev = list; list = temp; } if (root->right != NULL) inorder(root->right); } };

將二叉查找樹轉換成雙鏈表