15.输入一颗二元查找树,将该树转换为它的镜像
来源:互联网 发布:不需要交钱的网络兼职 编辑:程序博客网 时间:2024/05/18 00:11
题目:输入一颗二元查找树,将该树转换为它的镜像,
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
用递归和循环两种方法完成树的镜像转换。
例如输入:
8
/ /
6 10
// //
5 7 9 11
即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
用递归和循环两种方法完成树的镜像转换。
例如输入:
8
/ /
6 10
// //
5 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>using namespace std;struct BSTreeNode{int m_nValue;// value of nodeBSTreeNode *m_pLeft;// left child of nodeBSTreeNode *m_pRight;// right child of nodeBSTreeNode();BSTreeNode(int value);};void insert(BSTreeNode** root,int n);//树的插入操作void inversive(BSTreeNode* root);//树的反转int main(){BSTreeNode* root = NULL;insert(&root,8);insert(&root,6);insert(&root,10);insert(&root,5);insert(&root,7);insert(&root,9);insert(&root,11);inversive(root);return 0;}void insert(BSTreeNode** root,int n){BSTreeNode* temp = new BSTreeNode;BSTreeNode* current ;temp->m_nValue = n ;temp->m_pLeft = NULL ;temp->m_pRight = NULL ;if (*root == NULL){*root = new BSTreeNode(n);}else{current = *root ;while(current != NULL){if (current->m_nValue>n&¤t->m_pLeft==NULL){current->m_pLeft = temp ;break;}else if (current->m_nValue>n&¤t->m_pLeft!=NULL){current = current->m_pLeft;continue;}else if (current->m_nValue<n&¤t->m_pRight==NULL){current->m_pRight = temp;break;}else if (current->m_nValue<n&¤t->m_pRight!=NULL){current = current->m_pRight;continue;}}}}BSTreeNode::BSTreeNode(int value){m_nValue = value ;m_pLeft = NULL ;m_pRight = NULL ;}BSTreeNode::BSTreeNode(){}void inversive(BSTreeNode* root){if (root != NULL){BSTreeNode* temp = root->m_pLeft ;root->m_pLeft = root->m_pRight ;root->m_pRight = temp ;inversive(root->m_pLeft);inversive(root->m_pRight);}}
循环:这里要用到队里,先将节点的左右孩子入队列,然后交换左右孩子,知道队列为空!
#include <iostream>#include <queue>using namespace std;struct BSTreeNode{int m_nValue;// value of nodeBSTreeNode *m_pLeft;// left child of nodeBSTreeNode *m_pRight;// right child of nodeBSTreeNode();BSTreeNode(int value);};void insert(BSTreeNode** root,int n);//树的插入操作void inversive(BSTreeNode* root);//树的反转int main(){BSTreeNode* root = NULL;insert(&root,8);insert(&root,6);insert(&root,10);insert(&root,5);insert(&root,7);insert(&root,9);insert(&root,11);inversive(root);return 0;}void insert(BSTreeNode** root,int n){BSTreeNode* temp = new BSTreeNode;BSTreeNode* current ;temp->m_nValue = n ;temp->m_pLeft = NULL ;temp->m_pRight = NULL ;if (*root == NULL){*root = new BSTreeNode(n);}else{current = *root ;while(current != NULL){if (current->m_nValue>n&¤t->m_pLeft==NULL){current->m_pLeft = temp ;break;}else if (current->m_nValue>n&¤t->m_pLeft!=NULL){current = current->m_pLeft;continue;}else if (current->m_nValue<n&¤t->m_pRight==NULL){current->m_pRight = temp;break;}else if (current->m_nValue<n&¤t->m_pRight!=NULL){current = current->m_pRight;continue;}}}}BSTreeNode::BSTreeNode(int value){m_nValue = value ;m_pLeft = NULL ;m_pRight = NULL ;}BSTreeNode::BSTreeNode(){}void inversive(BSTreeNode* root){queue<BSTreeNode*> q ;BSTreeNode* temp = root;BSTreeNode* nowswap = NULL;q.push(temp);while (!q.empty()){temp = q.front();q.pop();if (temp->m_pLeft != NULL)q.push(temp->m_pLeft);if (temp->m_pRight != NULL)q.push(temp->m_pRight);nowswap = temp->m_pLeft ;temp->m_pLeft = temp->m_pRight ;temp->m_pRight = nowswap ;}}
- 15.输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像,
- 输入一颗二元查找树,将该树转换为它的镜像
- 【算法】输入一颗二元查找树,将该树转换为它的镜像
- No15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- No15_输入一颗二元查找树,将该树转换为它的镜像,
- 输入一颗二元查找树,将该树转换为它的镜像
- 15 输入一颗二元查找树,将该树转换为它的镜像
- 13.输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一棵二元查找树, 将该树转换为它的镜像
- 学了几年编程,我只是个混混
- mysql
- Latent Model- NMF
- php程序mysql Can't connect to MySQL server on 'XXX' (13)错误解决办法
- C++ 安全删除
- 15.输入一颗二元查找树,将该树转换为它的镜像
- ZOJ 3656
- JavaScript 事件
- android的进度条使用
- oracle的TM锁、TX锁
- 实现自己的扫描hibernate 标签类
- vc链接静态库的时候要注意的问题
- 陕西大荔一名警察参与绑架勒索162万后仍撕票-绑架-撕票-民警
- windows 性能计数器