微软100题15题(输入一颗二元查找树,将该树转换为它的镜像)
来源:互联网 发布:办公软件基础教程 编辑:程序博客网 时间:2024/05/18 02:43
1scala版本
package ms/** * 第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}; */class BinarySearchReverseTree(){ var root:Node=null; def this(data:List[Int]){ this() if(data.length>0){ this.root=new Node(data(0)) for(i<-1 until data.length){ insertNode(this.root,data(i)) } } } private[this] def insertNode(parent:Node,value:Int){ if(parent.value>value){ if(parent.left==null){ parent.left=new Node(value) }else{ insertNode(parent.left,value) } }else{ if(parent.right==null){ parent.right=new Node(value) }else{ insertNode(parent.right,value) } } } def switch(parent:Node){ if(parent==null)return; val left=parent.left val right=parent.right parent.left=right parent.right=left switch(parent.left) switch(parent.right) } def printPreOrder(parent:Node){ if(parent==null)return else printPreOrder(parent.left) print(parent.value+",") printPreOrder(parent.right) } case class Node(var value:Int,var left:Node=null,var right:Node=null)}object MicroSoft015 { def main(args: Array[String]): Unit = { val data=List(5,7,2,3,8,1,6,9) val tree=new BinarySearchReverseTree(data) tree.printPreOrder(tree.root) tree.switch(tree.root) println() tree.printPreOrder(tree.root) }}
2java版本
http://blog.csdn.net/hxpjava1/article/details/224370053python版本
'''Created on 2017-1-18@author: admin第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 }; '''from _overlapped import NULLclass BinarySearchReverseTree: def __init__(self,data): if len(data)>0: self.root=self.Node(data[0]) for i in range(1,len(data)): self._insertNode(self.root,data[i]) def _insertNode(self,parent,value): if parent.value>value: if parent.left==NULL: parent.left=self.Node(value) else: self._insertNode(parent.left, value) else: if parent.right==NULL: parent.right=self.Node(value) else: self._insertNode(parent.right, value) def switch(self,parent): if parent==NULL: return; left=parent.left right=parent.right parent.left=right parent.right=left self.switch(parent.left) self.switch(parent.right) def printTree(self,parent): if parent==NULL: return self.printTree(parent.left) print(parent.value,end=",") self.printTree(parent.right) class Node: def __init__(self,value): self.value=value self.left=NULL self.right=NULL if __name__ == '__main__': data=[5,7,2,3,8,1,6,9] tree=BinarySearchReverseTree(data) tree.printTree(tree.root) print() tree.switch(tree.root) tree.printTree(tree.root)
0 0
- 【微软100题】输入一颗二元查找树,将该树转换为它的镜像
- 微软100题15题(输入一颗二元查找树,将该树转换为它的镜像)
- 15、输入一颗二元查找树,将该树转换为它的镜像
- 15 输入一颗二元查找树,将该树转换为它的镜像
- 第15 题:题目:输入一颗二元查找树,将该树转换为它的镜像
- 第15 题: 题目:输入一颗二元查找树,将该树转换为它的镜像,
- 13. 微软面试题:题目:输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像,
- 输入一颗二元查找树,将该树转换为它的镜像
- 【算法】输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- 15.输入一颗二元查找树,将该树转换为它的镜像
- No15、输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- 输入一颗二元查找树,将该树转换为它的镜像
- No15_输入一颗二元查找树,将该树转换为它的镜像,
- 不依赖activity的全局对话框的实现
- nvidia-docker学习笔记
- 业务流程为主线的分解结构
- 单片机LED闪烁
- 使用java开发spark 实战
- 微软100题15题(输入一颗二元查找树,将该树转换为它的镜像)
- Ajax同步请求出现浏览器页面假死,阻塞UI线程之解决方案
- 使用java证书开发包,测试开发用例
- Mysql配置文件my.ini一般配置方法
- IntentFilter
- 深度学习入门实践(一)
- 【CSDN专属】markdown编辑器使用指南 ---解析部分
- 促进健康a
- node.js 事件循环 异步IO 和 非IO异步