思路:若为二叉搜索树,则中序遍历为递增的

let arr = [15,8,16,6,10];
let pindex = [];
function Node(){
this.root = null;
this.left = null;
this.right = null;
}

//构建完全二叉树
function CCtree(node,i){
let leftIndex = 2*i+1;
let rightIndex = 2*i+2;

if(leftIndex < arr.length){
let newNode = new Node();
newNode.root = arr[leftIndex];
node.left = newNode;
CCtree(newNode,leftIndex);
}
if(rightIndex < arr.length){
let newNode = new Node();
newNode.root = arr[rightIndex];
node.right = newNode;
CCtree(newNode, rightIndex);
}
}

//中序遍历

function VinIndex(node){
if(node.left){
if(node.left.left){
VinIndex(node.left);
}
else{
pindex.push(node.left.root);
}
}
pindex.push(node.root);
if(node.right){
if(node.right.left){
VinIndex(node.right)
}
else{
pindex.push(node.right.root);
}
}
}
var node = new Node();
node.root = arr[0];
CCtree(node, 0); //索引i是从0开始构建
VinIndex(node);
for(let i=0;i<pindex.length-1;i++){
for(let j=i+1;j<pindex.length;j++){
if(pindex[i]>pindex[j]){
i=pindex.length-1;
j=pindex.length;
console.log("False")
}
if(i===pindex.length-2 && j===pindex.length-1){
console.log("True")
}
}
}

js实现输入某串数字,构建完全二叉树,并判断是否为二叉搜索树的更多相关文章

  1. [leetcode]109. Convert Sorted List to Binary Search Tree链表构建二叉搜索树

    二叉树的各种遍历方式都是可以建立二叉树的,例如中序遍历,就是在第一步建立左子树,中间第二步建立新的节点,第三步构建右子树 此题利用二叉搜索树的中序遍历是递增序列的特点,而链表正好就是递增序列,从左子树 ...

  2. C 输入一串数字,去掉当中含7的和能被7整除的数

    C 输入一串数字,去掉当中含7的和能被7整除的数,每一个数小于10000,数字个数小于100 输入样例:1,7,56,77,87,2,45,42,97,9977 输出:1,2,45 注意:输入个数不确 ...

  3. PAT天梯赛练习题 L3-010. 是否完全二叉搜索树(完全二叉树的判断)

    L3-010. 是否完全二叉搜索树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 将一系列给定数字顺序插入一个初始为空的二叉搜 ...

  4. 用js刷剑指offer(二叉搜索树的后序遍历序列)

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 牛客网链接 js代码 function Verif ...

  5. 剑指offer23:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。输出Yes OR No。

    1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 2 思路和方法 二叉搜索树:二叉查找树(Bin ...

  6. 题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树?

    题目一:给出一个n,代表有从1到n的数字[1,2,3,··· n],问可以构成多少种二叉搜索树? 一开始的想法是直接递归构造,时间复杂度是指数上升:后来想法是找规律:先看例子: n = 1, 有一个元 ...

  7. 数据结构-二叉搜索树的js实现

    一.树的相关概念 1.基本概念 子树 一个子树由一个节点和它的后代构成. 节点的度 节点所拥有的子树的个数. 树的度 树中各节点度的最大值 节点的深度 节点的深度等于祖先节点的数量 树的高度 树的高度 ...

  8. 用js刷剑指offer(二叉搜索树与双向链表)

    题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 牛客网链接 js代码 /* function TreeNode(x) { ...

  9. JS递归及二叉搜索树的移除节点

    1递归含义:在某时某刻某个条件下调用包含自己的函数 2:注意点:⑴递归过程中一定要加限制条件,要不然会陷入死循环: 死循环eg: function f(someP){ f(somP); } f(4); ...

随机推荐

  1. skynet的火焰图

    之前搞过一下systemtap(systemtap折腾笔记),可惜很快琐事缠身,没有继续搞下去.最近偷空搞了一下,有点意思. 章大大的思路,是用perl生成systemtap脚本,从/proc/$pi ...

  2. Html中video的属性和方法大全

    <video>标签的属性 src :视频的属性 poster:视频封面,没有播放时显示的图片 preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览 ...

  3. VMware Ubuntu安装过程

    一.下载Ubuntu镜像文件 1.到官网下载:http://www.ubuntu.com 2.百度云(16.4.6): 链接:https://pan.baidu.com/s/14IlVP--D5mtZ ...

  4. 20155208徐子涵 《网络对抗技术》Web基础

    20155208徐子涵 <网络对抗技术>Web基础 实验要求 Web前端HTML Web前端javascipt Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密 ...

  5. Win10激活密钥key(可激活所有版本)

    Win10激活密钥key(可激活所有版本) Win10一年的免费升级服务已经到期,用户要使用Win10系统,就需要最新Win10密钥来激活Win10,一般激活Win10系统有两种方式,一个是使用Win ...

  6. 关于html引用php文件在编译器正常运行,web浏览器出问题的一点心得

    首先上图 第一张图是预期效果,也就是编译器运行的效果,第二张则是在浏览器打开的效果.那么为甚么会出现这何种问题呢? 原来:编译器能正常运行 是因为是走的cli模式,而浏览器现在走的是web模式,php ...

  7. 3,列表的 深 浅 copy

    如果列表只有一层,深浅copy是一样一样的,没有什么区别,你修改了copy后的列表,copy前的列表并不会随之改变. 如果列表中嵌套这列表,这是你修改了copy后第二层列表里面的元素,copy前第二层 ...

  8. 005-docker启动设置环境变量

    https://blog.csdn.net/wsbgmofo/article/details/79173920

  9. guava学习,集合专题

    lists //JDKList<String> list = new ArrayList<String>();list.add("a");list.add( ...

  10. WinDbg安装

    WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. 主页:http://msdn.microsoft ...