第15题:
题目:输入一颗二元查找树,将该树转换为它的镜像,
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
用递归和循环两种方法完成树的镜像转换。
例如输入:
8
/ /
6 10
// //
5 7 9 11
输出:
8
/ /
10
6
// //
11 9 7 5
- #include <iostream>
- struct Node
- {
- Node* left;
- Node* right;
- int data;
- Node(int d=0,Node* l = NULL, Node* r = NULL):data(d),left(l),right(r) {}
- };
- void convert(Node* root)
- {
- if (root)
- {
- Node* temp = root->left;
- root->left = root->right;
- root->right = temp;
- convert(root->left);
- convert(root->right);
- }
- }
- void prevorder(Node* root)
- {
- if (root)
- {
- printf("%d,",root->data);
- prevorder(root->left);
- prevorder(root->right);
- }
- }
- int main()
- {
- Node* root = new Node(8);
- root->left = new Node(6);
- root->right = new Node(10);
- root->left->left = new Node(5);
- root->left->right = new Node(7);
- root->right->left = new Node(9);
- root->right->left = new Node(11);
- convert(root);
- prevorder(root);
- }
阅读(1091) | 评论(0) | 转发(1) |