javascript数据结构与算法--二叉树(插入节点、生成二叉树)

前端之家收集整理的这篇文章主要介绍了javascript数据结构与算法--二叉树(插入节点、生成二叉树)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

javascript数据结构与算法-- 插入节点、生成二叉树

@H_403_2@二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中

 

 

 

403_2@

<span style="color: #008000;">/<span style="color: #008000;">用来生成一个节点<span style="color: #008000;">/
<span style="color: #0000ff;">function<span style="color: #000000;"> Node(data,left,right) {
<span style="color: #0000ff;">this.data = data;<span style="color: #008000;">//<span style="color: #008000;">节点存储的数据
<span style="color: #0000ff;">this.left =<span style="color: #000000;"> left;
<span style="color: #0000ff;">this.right =<span style="color: #000000;"> right;
<span style="color: #0000ff;">this.show =<span style="color: #000000;"> show;
}

<span style="color: #0000ff;">function<span style="color: #000000;"> show() {
<span style="color: #0000ff;">return <span style="color: #0000ff;">this<span style="color: #000000;">.data;
}

<span style="color: #008000;">/<span style="color: #008000;">用来生成一个二叉树<span style="color: #008000;">/
<span style="color: #0000ff;">function<span style="color: #000000;"> BST() {
<span style="color: #0000ff;">this.root = <span style="color: #0000ff;">null<span style="color: #000000;">;
<span style="color: #0000ff;">this.insert =<span style="color: #000000;"> insert;
}

<span style="color: #008000;">/*<span style="color: #008000;">将数据插入二叉树
(1)设根节点为当前节点。
(2)如果待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点;反
之,执行第4步。
(3)如果当前节点的左节点为null,就将新的节点插入这个位置,退出循环;反之,继续
执行下一次循环。
(4)设新的当前节点为原节点的右节点。
(5)如果当前节点的右节点为null,就将新的节点插入这个位置,退出循环;反之,继续
执行下一次循环。

  • <span style="color: #008000;">*/
    <span style="color: #0000ff;">function<span style="color: #000000;"> insert(data) {
    <span style="color: #0000ff;">var n = <span style="color: #0000ff;">new Node(data,<span style="color: #0000ff;">null,<span style="color: #0000ff;">null<span style="color: #000000;">);
    <span style="color: #0000ff;">if (<span style="color: #0000ff;">this.root == <span style="color: #0000ff;">null<span style="color: #000000;">) {
    <span style="color: #0000ff;">this.root =<span style="color: #000000;"> n;
    }
    <span style="color: #0000ff;">else<span style="color: #000000;"> {
    <span style="color: #0000ff;">var current = <span style="color: #0000ff;">this<span style="color: #000000;">.root;
    <span style="color: #0000ff;">var<span style="color: #000000;"> parent;
    <span style="color: #0000ff;">while (<span style="color: #0000ff;">true<span style="color: #000000;">) {
    parent =<span style="color: #000000;"> current;
    <span style="color: #0000ff;">if (data <<span style="color: #000000;"> current.data) {
    current = current.left;<span style="color: #008000;">//<span style="color: #008000;">待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点
    <span style="color: #0000ff;">if (current == <span style="color: #0000ff;">null) {<span style="color: #008000;">//<span style="color: #008000;">如果当前节点的左节点为null,就将新的节点插入这个位置,退出循环;反之,继续执行下一次while循环。
    parent.left =<span style="color: #000000;"> n;
    <span style="color: #0000ff;">break<span style="color: #000000;">;
    }
    }
    <span style="color: #0000ff;">else<span style="color: #000000;"> {
    current = current.right;<span style="color: #008000;">//<span style="color: #008000;">待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点
    <span style="color: #0000ff;">if (current == <span style="color: #0000ff;">null<span style="color: #000000;">) {
    parent.right =<span style="color: #000000;"> n;
    <span style="color: #0000ff;">break<span style="color: #000000;">;
    }
    }
    }
    }
    }

<span style="color: #0000ff;">var nums = <span style="color: #0000ff;">new<span style="color: #000000;"> BST();
nums.insert(23<span style="color: #000000;">);
nums.insert(45<span style="color: #000000;">);
nums.insert(16<span style="color: #000000;">);
nums.insert(37<span style="color: #000000;">);
nums.insert(3<span style="color: #000000;">);
nums.insert(99<span style="color: #000000;">);
nums.insert(22<span style="color: #000000;">);

console.log(nums);

 

原文链接:https://www.f2er.com/js/403374.html

猜你在找的JavaScript相关文章