第15 题: 题目:输入一颗二元查找树,将该树转换为它的镜像,
来源:互联网 发布:修改linux账号权限 编辑:程序博客网 时间:2024/06/05 00:50
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。
例如输入:
8
/ \
6 10
/\ /\
7 9 11
输出:
8
/ \
10 6
/\ /\
11 9 7 5
定义二元查找树的结点为:
struct BSTreeNode // a node in the binary search tree (BST)
{
int m_nValue; // value of node
BSTreeNode *m_pLeft; // left child of node
BSTreeNode *m_pRight; // right child of node
};
分析:镜像转换无非就是对每个节点进行一个左右交换。
#include <iostream>#include <queue>using namespace std;struct BNode{int key;BNode *m_pl;BNode *m_pr;};typedef BNode* T;typedef queue<T> QET;void CreateTree(BNode* &head){QET qe;head = new BNode();cin >> head->key;head->m_pl = head->m_pr = 0;qe.push(head);while ( !qe.empty() ){BNode *temp = qe.front();qe.pop();cout << temp->key << "的左右子女的关键字,空用-1表示:" << endl;BNode *l = new BNode();BNode *r = new BNode();cin >> l->key >> r->key ;if (l->key == -1)delete l;else {l->m_pl = l->m_pr = 0;temp->m_pl = l;qe.push(l);}if (r->key == -1)delete r;else{r->m_pl = r->m_pr = 0;temp->m_pr = r;qe.push(r);}}return ;}void RecurWay(BNode *head){if ( head == 0 )return ;RecurWay(head->m_pl);RecurWay(head->m_pr);BNode *s = head->m_pl;head->m_pl = head->m_pr;head->m_pr = s;return ;}void CircuWay(BNode *head){QET qe;if ( head == 0 )return ;qe.push(head);while ( !qe.empty() ){BNode *top = qe.front();if ( top->m_pl )qe.push(top->m_pl);if ( top->m_pr )qe.push(top->m_pr);BNode *s = top->m_pl;top->m_pl = top->m_pr;top->m_pr = s;qe.pop();}return ;}int main(){BNode *head = 0;CreateTree(head);RecurWay(head);CircuWay(head);return 0;}
- 第15 题:题目:输入一颗二元查找树,将该树转换为它的镜像
- 第15 题: 题目:输入一颗二元查找树,将该树转换为它的镜像,
- 15、输入一颗二元查找树,将该树转换为它的镜像
- 15 输入一颗二元查找树,将该树转换为它的镜像
- 13. 微软面试题:题目:输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像,
- 输入一颗二元查找树,将该树转换为它的镜像
- 【算法】输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- No15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- No15_输入一颗二元查找树,将该树转换为它的镜像,
- 输入一颗二元查找树,将该树转换为它的镜像
- 13.输入一颗二元查找树,将该树转换为它的镜像
- 黑马程序员——java反射
- ubuntu 下安装adobe reader
- JavaWeb 中MVC 思想总结
- 关于rest
- 编程之美——数字哑谜
- 第15 题: 题目:输入一颗二元查找树,将该树转换为它的镜像,
- 想看看,周末到海图去逛逛
- SOJ 3578 欧拉函数
- 进程间通信详解 - 动态链接库实现
- 尽量用C的方法----在频繁执行的代码中
- 编程珠玑(三)取样问题
- 指尖上的Android之实战篇(七)
- cxGrid实现分页
- 第一章 Windows程序设计概述