以下函数用于将一颗二叉搜索树转换成一个有序的双向链表。要求不能创建任何新的...
以下函数用于将一颗二叉搜索树转换成一个有序的双向链表。要求不能创建任何新的节点,只能调整树种节点指针的指向。
如输入下图中左边的二叉搜索树,则输出转换后的排序双向链表:
10
/ \
6 14
/ \ / \
4 8 12 16
转换成:
4 <=> 6 <=> 8 <=> 10 <=> 12 <=> 14 <=> 16
请指出程序代码中错误的地方(问题不止一处,请尽量找出所有你认为错误的地方):
1 #include <stack> 2 using namespace std 3 4 struct TreeNode { 5 int val 6 TreeNode *left, *right 7 } 8 9 TreeNode* Convert(TreeNode* root){ 10 if (root == NULL) 11 return root 12 13 TreeNode* listHead = NULL 14 TreeNode* listLastNode = NULL 15 16 stack<TreeNode*> s 17 while(root){ 18 while(root){ 19 root=root->left 20 s.push(root) 21 } 22 root=s.top() 23 s.pop() 24 if (listHead == NULL){ 25 listHead = root 26 }else{ 27 listLastNode->right = root 28 } 29 listLastNode = root 30 root= root->right 31 } 32 return listHead 33 }