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

面试题27 二叉搜索树与双向链表

2016-04-05 23:06 435 查看

题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
void convertNode(TreeNode *pNode, TreeNode **pLast){
if (pNode == NULL){
return;
}
TreeNode *pCur = pNode;
if (pCur->left != NULL){
convertNode(pNode->left, pLast);
}
pCur->left = *pLast;
if (*pLast != NULL){
(*pLast)->right = pCur;
}
*pLast = pCur;
if (pCur->right != NULL){
convertNode(pCur->right, pLast);
}
}

TreeNode* Convert(TreeNode* pRootOfTree)
{
TreeNode *pLast = NULL;
convertNode(pRootOfTree, &pLast);
TreeNode *pHead = pLast;

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