非递归将二叉搜索树转换成双向链表

来源:互联网 发布:淘宝死神ps3 编辑:程序博客网 时间:2024/05/16 08:37

《剑指Offer》一书中介绍了将二叉树转成双向链表的递归算法,今天面试碰到了这个题,不会做,很悲剧。

回来想了一下,写一个非递归的转换算法,转换的关键一步是得将二叉树退化成单向链表,代码如下:

//结点结构类型struct Node{int value;Node* left;Node* right;Node(int v, Node* l = NULL, Node* r = NULL) : value(v), left(l), right(r) {}};void Rotate(Node** root){if (!root || !*root){return;}Node* tmp = new Node(0, *root);//辅助结点Node* cur = tmp;while (cur->left){if (!cur->left->right){cur = cur->left;} else{Node* right = cur->left->right;cur->left->right = right->left;right->left = cur->left;cur->left = right;}}*root = tmp->left;delete tmp;}




原创粉丝点击