以下函数用于将一颗二叉搜索树转换成一个有序的双向链表。要求不能创建任何新的...

发布于 2022-03-03 16:37:31

以下函数用于将一颗二叉搜索树转换成一个有序的双向链表。要求不能创建任何新的节点,只能调整树种节点指针的指向。

如输入下图中左边的二叉搜索树,则输出转换后的排序双向链表:

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 }

关注者
0
被浏览
37
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看