面试题:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。
来源:互联网 发布:南风知我意浅云txt下载 编辑:程序博客网 时间:2024/05/16 04:53
题目:
输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。
例如输入:
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>#include <string.h>using namespace std;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};void BuildTree(BSTreeNode *&Node,int n) //建立二叉树{if(Node == NULL){BSTreeNode *NewNode = new BSTreeNode();NewNode->m_nValue = n;NewNode->m_pLeft = NULL;NewNode->m_pRight = NULL;Node = NewNode;}else if(Node->m_nValue < n) {BuildTree(Node->m_pRight,n);}else {BuildTree(Node->m_pLeft,n);}}void Convert(BSTreeNode *&Node) //进行镜像转换{if(Node == NULL)return ;Convert(Node->m_pLeft);Convert(Node->m_pRight);BSTreeNode *Temp = Node->m_pLeft;Node->m_pLeft = Node->m_pRight;Node->m_pRight = Temp;}void OutPut(BSTreeNode *&Node) //前序遍历输出树{if(Node == NULL)return ;cout<<Node->m_nValue<<" ";OutPut(Node->m_pLeft);OutPut(Node->m_pRight);}int main(){BSTreeNode *Node = NULL;BuildTree(Node,8);BuildTree(Node,6);BuildTree(Node,10);BuildTree(Node,5);BuildTree(Node,7);BuildTree(Node,9);BuildTree(Node,11);OutPut(Node); //镜像转换前前序输出树cout<<endl;Convert(Node); //镜像转换OutPut(Node); //镜像转换后前序输出树cout<<endl;return 0;}
- 面试题:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。
- 输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。
- 输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换:
- 输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
- 输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点
- 微软算法100道题-----输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点
- 微软算法100道题-----输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点
- 13. 微软面试题:题目:输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像,
- 输入一颗二元查找树,将该树转换为它的镜像
- 【算法】输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- No15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 2013年8月《身份证、指纹、实名制》
- Ubuntu 环境变量
- 在代理方法animationDidStop中区分是哪个动画
- finally_clause_and_return_clause_in_java
- 一些C/C++开源项目网址
- 面试题:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。
- Android中Activity启动模式小结
- 通俗易懂多线程(JAVA)
- 教你使用Hibernate tools,生成带中文注释的类和hbm文件
- strrchr函数
- ios7 状态栏
- cv::Mat与iplimage类型如何进行互相转换
- C++ AMP: 基于代码的 C++ AMP 简介
- C#对ini文件的读写操作