微软100题第9题(判断整数序列是不是二元查找树的后序遍历结果)

微软的100道算法面试题(一) 程序员为什么要学数据结构? 在计算机发展的初期,人们使用计算机的主要目的是处理数值计算问题。使用计算机解决具体问题一般需要经过以下几个步骤:首先从具体问题抽象出适当的数学模型,然后设计或选择解此数学模型的算法,接着编写程序并进行调试、测试,直至得到最终的解答。 由于最初涉及的运算对象是简单的整型、实型或布尔型数据,所以程序设计者的主要精力集中于程序设计的技巧上,而无需重视数据结构。随着计算... 阅读详情

发布一个k8s部署视频:https://edu.youkuaiyun.com/course/detail/26967

课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。

腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518

第二个视频发布  https://edu.youkuaiyun.com/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.youkuaiyun.com/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件


————————————————------------------------------------------------------------------------------------------------------------------

1scala版本

 

package ms
/**
 * 第9题(树)
判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
         8
      /  /
     6    10
    / /  / /
   5  7 9  11
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
 */
import scala.util.control.Breaks._
object MicroSoft009 {
  def isBinarySearchTree(data:List[Int],start:Int,end:Int):Boolean={
    if(start>end){
      return true;
    }
    val root=data(end);
    var subRootIndex= -1;
    var breaked=false;
    breakable{
      for(i<-start until end){
        if(data(i)>=root){
          subRootIndex=i;
          breaked=true;
          break;
        }
      }
    }
    if(!breaked){
      return isBinarySearchTree(data,start,end-1);
    }
    for(i<-subRootIndex+1 until end){
      if(data(i)<root){
        return false;
      }
    }
    val left=isBinarySearchTree(data,start,subRootIndex-1);
    if(!left){
      return false;
    }
    return isBinarySearchTree(data,subRootIndex,end-1);
  }
  
  def main(args: Array[String]): Unit = {
    val data=List(5,7,6,9,11,10,8);
    println(isBinarySearchTree(data,0,data.length-1))
    val data2=List(7,4,6,5)
    println(isBinarySearchTree(data2,0,data2.length-1))
  }
}

 

 

 

2java版

 

3python版

'''
Created on 2017-1-17

@author: admin
 第9题(树) 
判断整数序列是不是二元查找树的后序遍历结果 
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 
如果是返回true,否则返回false。 
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 
         8 
      /  / 
     6    10 
    / /  / / 
   5  7 9  11 
因此返回true。 
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。 
'''
def isPostOrderBinaryTreeWalk(data,start,end):
    if (start>end):
        return True
    root=data[end]
    subRootIndex=-1
    for i in range(start,end):
        if data[i]>=root:
            subRootIndex=i
            break;
    if subRootIndex!=-1:
        for i in range(subRootIndex+1,end):
            if data[i]<root:
                return False
    if subRootIndex==-1:
        return isPostOrderBinaryTreeWalk(data, start, end-1)
    left=isPostOrderBinaryTreeWalk(data, start, subRootIndex-1)
    if not left:
        return False
    return isPostOrderBinaryTreeWalk(data, subRootIndex, end-1)
if __name__ == '__main__':
    data1=[5,7,6,9,11,10,8]
    print(isPostOrderBinaryTreeWalk(data1, 0, len(data1)-1))
    data2=[7,4,6,5]
    print(isPostOrderBinaryTreeWalk(data2, 0,len(data2)-1))
 

c语言版本

/*
 * microsoft009.c
 *
 *  Created on: 2017年1月26日
 *      Author: admin
 第9题(树)
判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
         8
      /  /
     6    10
    / /  / /
   5  7 9  11
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
 */
#include <stdio.h>
#define bool int
#define false 0
#define true 1

bool isPostOrderWalkBinaryTree(int data[],int start,int end);

int main(){
	int data1[]={5,7,6,9,11,10,8};
	int data2[]={7,4,6,5};
	printf("data1 is isPostOrderWalkBinaryTree:%s\n",(isPostOrderWalkBinaryTree(data1,0,6)==true)?"true":"false");
	printf("data2 is isPostOrderWalkBinaryTree:%s\n",(isPostOrderWalkBinaryTree(data2,0,3)==true)?"true":"false");
	return 0;
}

bool isPostOrderWalkBinaryTree(int data[],int start,int end){
	if(start>=end){
		return true;
	}
	int last=data[end];
	int index=-1;
	for(int i=start;i<end;i++){
		if(data[i]>last){
			index=i;
			break;
		}
	}
	if(index==-1){
		return isPostOrderWalkBinaryTree(data,start,end-1);
	}else{
		for(int i=index+1;i<end;i++){
			if(data[i]<=last){
				return false;
			}
		}
	}

	return isPostOrderWalkBinaryTree(data,start,index-1)&&isPostOrderWalkBinaryTree(data,index+1,end-1);
}

 

c++版本

/*
 * microsoft009.cpp
 *
 *  Created on: 2017年2月6日
 *      Author: admin
  第9题(树)
判断整数序列是不是二元查找树的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
         8
      /  /
     6    10
    / /  / /
   5  7 9  11
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
 */

#include "iostream"
using namespace std;
#include "limits.h"

bool judgeBinaryTreePreOrder(int data[] ,int start,int end){
	int last=data[end];
	int index=INT_MIN;
	for(int i=start;i<end;i++){
		if(data[i]>last){
			index=i;
			break;
		}
	}
	int i;
	if(index<start){
		i=start;
	}else{
		i=index+1;
	}
	for(;i<end;i++){
		if(data[i]<last){
			return false;
		}
	}
	bool right=false;
	bool left=false;
	if(index>start){
		right=judgeBinaryTreePreOrder(data,index,end-1);
		left=judgeBinaryTreePreOrder(data,start,index-1);
		return right&left;
	}else{
		if(end-1>=start){
			return judgeBinaryTreePreOrder(data,0,end-1);
		}
		return true;
	}
}


int main(){
	//int data[]={5,7,6,9,11,10,8};
	int data[]={7,4,6,5};
	cout<<boolalpha;
	cout<<judgeBinaryTreePreOrder(data,0,6)<<endl;;
	return 0;
}





 

 

判断整数序列是否为二元查找树的后序遍历结果的解决方法 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果.      8     / \   6   10  / \    / \  5  7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。本题网上已经有用递归单纯判断的解法. 个人解法: 先得到序列对应的中序序列, 然后看中序序列是否从小到大有序, 得出判断. 相比:时间复杂度相同, 增加N的空间, 但可求得对应的中序序列.以下为代码: 代码如下:#i 立即下载

相关推荐

Petalinux 2021.1 + Vivado 2021 实战:手把手教你为Zynq板卡移植Linux并搞定AXI DMA驱动

本文详细介绍了基于Petalinux 2021.1和Vivado 2021工具链,为Zynq开发板移植Linux系统并开发AXI DMA驱动的全流程。从环境配置、硬件设计到驱动适配与性能优化,提供了实战避坑技巧和版本特异性问题的解决方案,帮助开发者快速构建高速数据传输系统。

weixin_42641741的博客 387

9、判断整数序列是不是二元查找树的后序遍历结果

第9 题判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9

SunDancer 707

实战教程:用YOLOv11+PyQt5打造工地安全帽检测系统(附完整数据集)

本文提供了一份完整的实战指南,详细介绍了如何利用YOLOv11目标检测模型与PyQt5界面库,从零开始构建一个智能工地安全帽检测桌面应用。内容涵盖高质量数据集的准备与标注、YOLOv11模型训练与调优,以及如何使用PyQt5开发流畅、专业的图形用户界面,最终实现一个可实际部署的AI安全监控系统。

plum99的博客 738

判断整数序列是不是二元查找树的后序遍历结果

题目:输入一个整数数组,判断该数组是不是二元查找树的后序遍历结果,如果是,返回true,否则返回假,具体实现如下:#include <iostream> using namespace std; //搜索树后序遍历数组最后一个是根,从数组头到第一个比根大的节点是左孩子,后面右孩子必须全大于根,递推 static bool VerifyArrayOfBST(int a[], int ...

weixin_30585437的博客 174

LAMMPS ReaxFF模拟后处理:如何用Python精准追踪C-N键的断裂与形成?

本文详细介绍了如何利用Python对LAMMPS ReaxFF模拟结果进行后处理,精准追踪C-N键的断裂与形成过程。通过解析键级输出文件、构建原子类型映射字典,并实现C-N键的统计与可视化,为材料科学和催化反应研究提供了高效的数据分析解决方案。文章特别强调了ReaxFF力场在断键分析中的关键作用,并提供了完整的Python代码实现。

weixin_28706923的博客 356

Qt for Android:基于libusb实现CH340x串口通信的高效开发方案

本文详细介绍了在Qt for Android环境下,基于libusb实现CH340x串口通信的高效开发方案。通过绕过Android高版本系统的权限限制,利用libusb+JNI技术实现稳定通信,适用于工业手持终端等场景。文章涵盖环境搭建、核心实现、常见问题解决方案及性能调优经验,帮助开发者快速掌握这一关键技术。

weixin_42715608的博客 428

程序员面试一百题-06-判断整数序列是不是二元查找树的后序遍历结果

程序员面试一百题-06-判断整数序列是不是二元查找树的后序遍历结果

鱼七 569

Ubuntu 24.04 LTS与Windows 11远程桌面连接:从xrdp闪退到xfce4桌面环境的实战排障

本文详细解决了在Ubuntu 24.04 LTS上使用xrdp连接Windows 11远程桌面时遇到的登录后闪退问题。通过分析日志,定位到默认GNOME桌面环境与xrdp的兼容性冲突,并提供了将桌面环境更换为轻量且兼容性更佳的XFCE4的完整实战解决方案,包括安装、关键配置修改及服务重启步骤,确保远程连接稳定可靠。

mango的博客 807

微软面试100之9 判断整数序列是不是二元查找树的后序遍历结果

第9题(树) 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:        8       /  /      6  10     /  / / /    5  7 9  11 因此返回t

domwin300208的专栏 599

Android:Google三方库之Adjust集成详细步骤

Android为APP添加google adjust功能

学习就是我的个性 4477

避开模板匹配的坑:OpenCVSharp中边缘梯度算法的优化实践

本文深入探讨了OpenCVSharp中边缘梯度算法在模板匹配中的优化实践,解决了传统方法在尺度变化、角度旋转和光照差异下的局限性。通过Sobel算子提取边缘梯度特征,结合轮廓检测和多尺度匹配策略,显著提升了匹配的鲁棒性和准确性。文章还分享了并行计算、内存访问优化等实战技巧,适用于工业检测和自动化识别场景。

http9protocoller的博客 199

算法与数据结构面试题(8)-判断整数序列是不是二元查找树的后序遍历结果

题目 (微软数据结构和算法面试100题中的第9题) 判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序

doctorq 1534

玩转ubuntu18 --机器视觉方面(yolo算法识别及摄像头和cmake问题解决)

玩转ubuntu18 --机器视觉方面(yolo v3算法识别) 1.YOLO的简介 工作原理 先前的检测系统重新调整分类器或本地化器以执行检测。他们将模型应用于多个位置和比例尺的图像。图像的高分区域被视为检测。 我们使用完全不同的方法。我们将单个神经网络应用于整个图像。该网络将图像划分为区域,并预测每个区域的边界框和概率。这些边界框按预测概率加权。 我们的模型比基于分类器的系统具有几个优势。它在测试时间查看整个图像,因此其预测由图像中的全球上下文提供信息。它还通过单一网络评估进行预测,这与R-CNN等系统

qq_53951823的博客 1556

微软算法100道题-----判断整数序列是不是二元查找树的后序遍历结果

题目: 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:   8   / \   6 10   / \ / \   5 7 9 11 因此返回true。 如果输入7、4、6、5,没有哪

ice_time1的博客 374

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

微软算法100题09 判断整数序列是不是二元查找树的后序遍历结果

9.判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。 思路:...

weixin_30896825的博客 94

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

微软100题(9) 二叉搜索树的后序遍历

题目: 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:          8       /  /      6    10     / /  / /    5  7 9 

liuqing0517的博客 414

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构]

程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构]   2007-03-05 15:01:09|  分类: 树 |  标签:编程  就业  找工作  微软  数据结构  |举报|字号 订阅 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于

137

微软等数据结构与算法面试100题 第九题

第九题 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:          8       /  \      6    10     / \  / \    5  7 9  11 因此返回

夏天DE风 804

微软100题-009

第9题(树) 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 / / / / 5 7 9 11 因此

tiandaoxiaowu的博客 265

微软面试100题_9

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11 因此返回true。 如果输...

121

微软100题-天天做-第9题

第9题(树) 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 / / / / 5 7 9 1

mark's technic world 859

微软等公司数据结构+算法面试100题--树

引用自博客 http://blog.youkuaiyun.com/v_JULY_v 1.(原第1题) ---------------------------------------------- 把二元查找树转变成排序的双向链表  题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。   10   / \  6 14  /

programmer的专栏 913

数据结构+算法面试100题~~~摘自优快云,作者July

1.把二元查找树转变成排序的双向链表(树) 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / / 6 14 / / / / 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: struct BSTreeNode { int

janvinal的专栏 1803

Java 真实大厂面试题 100 道汇总

1024

曲翎风 589
上一篇: 微软100题第7题(判断俩个链表是否相交)
下一篇: 微软100题第11题(求二叉树中节点的最大距离)
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值