您的位置:首页 > 职场人生

【剑指offer 面试题27】二叉搜索树与双向链表

2015-07-08 21:15 267 查看
  输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。

C++:

#include <iostream>
using namespace std;

struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x = 0):val(x), left(NULL), right(NULL){}
};

void ConvertNode(TreeNode *pNode, TreeNode **pLastNode)
{
if(pNode == 0)
return ;

if(pNode->left != 0)
ConvertNode(pNode->left, pLastNode);

pNode->left = (*pLastNode);
if((*pLastNode) != 0)
(*pLastNode)->right = pNode;
(*pLastNode) = pNode;

if(pNode->right != 0)
ConvertNode(pNode->right, pLastNode);
}

int main()
{
TreeNode *root = new TreeNode(10);
TreeNode *node6 = new TreeNode(6);
TreeNode *node14 = new TreeNode(14);
TreeNode *node4 = new TreeNode(4);
TreeNode *node8 = new TreeNode(8);
TreeNode *node12 = new TreeNode(12);
TreeNode *node16 = new TreeNode(16);

root->left = node6;
root->right = node14;
node6->left = node4;
node6->right = node8;
node14->left = node12;
node14->right = node16;

TreeNode *pLastNode = NULL;
ConvertNode(root, &pLastNode);

while(pLastNode != 0)
{
cout<<pLastNode->val<<" ";
pLastNode = pLastNode->left;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: