剑指Offer 1521 二叉树的镜像
2013-09-16 00:09
453 查看
第15题:
题目:输入一颗二元查找树,将该树转换为它的镜像,
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
用递归和循环两种方法完成树的镜像转换。
题目:输入一颗二元查找树,将该树转换为它的镜像,
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
用递归和循环两种方法完成树的镜像转换。
#include <cstdlib> #include <iostream> #include <stdio.h> using namespace std; struct TreeNode { TreeNode *left; TreeNode *right; int value; }; bool firstprint; void change(TreeNode *current) { if(current->left == NULL && current->right == NULL) return; if(current->left != NULL) change(current->left); if(current->right != NULL) change(current->right); if(current->left != NULL || current->right != NULL) { TreeNode *temp = current->left; current->left = current->right; current->right = temp; } } /* void change(TreeNode *root){ if(root==NULL) { return; } TreeNode *temp = root->left; root->left = root->right; root->right = temp; if(root->left) change(root->left); if(root->right) change(root->right); } */ void preTravel(TreeNode *current) { if(current){ if(firstprint == true) { printf("%d",current->value); firstprint = false ; } else printf(" %d",current->value); preTravel(current->left); preTravel(current->right); } } int main(int argc, char *argv[]) { TreeNode node[1500]; int n; int one, two; char ci; while(scanf("%d", &n) != EOF) { firstprint = true; for(int i = 0; i < n; i++) cin >> node[i].value; for(int i = 0; i < n; i++) { cin >> ci; if(ci == 'd') { cin >> one >> two; node[i].left = &node[one-1]; node[i].right = &node[two-1]; } else if(ci == 'l') { cin >> one; node[i].left = &node[one-1]; node[i].right = NULL; } else if(ci == 'r') { cin >> two; node[i].left = NULL; node[i].right = &node[two-1]; } else { node[i].left = NULL; node[i].right = NULL; } } if(n == 0) printf("NULL\n"); else { change(&node[0]); preTravel(&node[0]); printf("\n"); } } return 0; }
相关文章推荐
- 剑指Offer题目1521:二叉树的镜像
- 【剑指Offer面试编程题】题目1521:二叉树的镜像--九度OJ
- 剑指OFFER之二叉树的镜像(九度OJ1521)
- 【九度OJ1521】|【剑指offer19】二叉树的镜像
- 【剑指Offer面试题】 九度OJ1521:二叉树的镜像
- 剑指Offer - 九度1521 - 二叉树的镜像
- 【剑指Offer面试编程题】题目1521:二叉树的镜像--九度OJ
- 剑指offer---二叉树的镜像
- 剑指Offer:二叉树的镜像
- [剑指offer]镜像二叉树
- 剑指offer 面试题19 二叉树的镜像
- 【剑指offer】面试题27:二叉树的镜像
- 剑指offer 19---二叉树的镜像
- 剑指offer-19 二叉树的镜像
- 剑指offer题解 二叉树的镜像
- 剑指offer 二叉树的镜像
- 剑指offer 面试题19 二叉树镜像
- 剑指offer面试题27:二叉树的镜像
- 剑指offer:二叉树的镜像
- 剑指offer:二叉树的镜像(python)