博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法面试题80道(15)
阅读量:5884 次
发布时间:2019-06-19

本文共 1858 字,大约阅读时间需要 6 分钟。

15:

题目:输入一颗二元查找树,将该树转换为它的镜像,

即在转换后的二元查找树中,左子树的结点都大于右子树的结点。

用递归和循环两种方法完成树的镜像转换。 

例如输入:

    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
#include
#include
using namespace std;struct BSTreeNode{ int m_nValue; BSTreeNode *m_pLeft; BSTreeNode *m_pRight;};void addNode(BSTreeNode *&root,int value){ if(root==NULL){ BSTreeNode *tree=new BSTreeNode(); if(tree==NULL) {cout<<"内存错误"<
m_nValue=value; tree->m_pLeft=NULL; tree->m_pRight=NULL; root=tree; }else if(root->m_nValue>value) addNode(root->m_pLeft,value); else if(root->m_nValue
m_pRight,value); else cout<<"结点重复"<
m_pLeft; root->m_pLeft=root->m_pRight; root->m_pRight=tree;}//递归方法求镜像void mirrorTree(BSTreeNode *root){ if(root==NULL) return ; mirrorTree(root->m_pLeft); mirrorTree(root->m_pRight); swap(root);}//可以用队列,也可以用栈,这里是用的队列,其实都是一样的,只是转换的顺序不同void loopMirrorTree(BSTreeNode *root){ queue
q; q.push(root); while(!q.empty()){ BSTreeNode *t=q.front(); q.pop(); swap(t); if(t->m_pLeft!=NULL) q.push(t->m_pLeft); if(t->m_pRight!=NULL) q.push(t->m_pRight); }}//中序遍历看结果void inOrderTree(BSTreeNode *root){ if(root==NULL) return; if(root->m_pLeft!=NULL) inOrderTree(root->m_pLeft); cout<
m_nValue<<" "; if(root->m_pLeft!=NULL) inOrderTree(root->m_pRight);}int main(){ //建树 BSTreeNode *root=NULL; addNode(root,8); addNode(root,6); addNode(root,10); addNode(root,5); addNode(root,7); addNode(root,9); addNode(root,11); //先中序遍历看结果 inOrderTree(root); cout<

 

转载于:https://www.cnblogs.com/wabi87547568/p/5265447.html

你可能感兴趣的文章
so easy 前端实现多语言
查看>>
【追光者系列】HikariCP源码分析之ConcurrentBag&J.U.C SynchronousQueue、CopyOnWriteArrayList...
查看>>
canvas系列教程05-柱状图项目3
查看>>
css绘制几何图形
查看>>
HTML标签
查看>>
理解JS中的Event Loop机制
查看>>
转载:字符编码笔记:ASCII,Unicode和UTF 8
查看>>
修复看不懂的 Console Log
查看>>
Android跨进程通信 AIDL使用
查看>>
ajax常见面试题
查看>>
结合kmp算法的匹配动画浅析其基本思想
查看>>
vue进行wepack打包执行npm run build出现错误
查看>>
【d3.js v4基础】过渡transition
查看>>
VUEJS开发规范
查看>>
Android系统的创世之初以及Activity的生命周期
查看>>
人人都会数据采集- Scrapy 爬虫框架入门
查看>>
Android网络编程11之源码解析Retrofit
查看>>
韩国SK电讯宣布成功研发量子中继器
查看>>
TCP - WAIT状态及其对繁忙的服务器的影响
查看>>
安全预警:全球13.5亿的ARRIS有线调制解调器可被远程攻击
查看>>