首页 > 编程语言 >痛恨 JavaScript 每一天(缺少指针)

痛恨 JavaScript 每一天(缺少指针)

时间:2023-01-31 00:12:54浏览次数:60  
标签:Node insert right JavaScript 指针 newNode 痛恨 root left

背景

二叉搜索树,插入节点

JavaScript解法

function insertNode(root, newNode) {
    if (newNode.key < root.key) {
        if (root.left) {
            insertNode(root.left, newNode);
        } else {
            root.left = newNode;
        }
    } else {
        if (root.right) {
            insertNode(root.right, newNode);
        } else {
            root.right = newNode;
        }
    }
}

function insert(root, keys) {
    let newNode = new Node(key);
    return insertNode(root, newNode);
}

insert(root, key); // 4, 3, 5, 9, 8, 2, 12, 6

c++ 解法

#include <iostream>
#include <assert.h>
using namespace std;

class Node{
public:
    int val = 0;
    Node* left = NULL;
    Node* right = NULL;
    Node(int v):val(v){}
};
void insert(Node** node,int v) {
    if (!*node) {*node = new Node(v);return;}
    if ((*node)->val > v) insert(&(*node)->left,v);
    else insert(&(*node)->right,v);
}
int main() {
    Node* root = new Node(2);
    root->left = new Node(1);
    root->right = new Node(4);
    root->left->left = new Node(-1);
    insert(&root,0);
    insert(&root,3);
    cout << root->left->left->right->val << endl;
    cout << root->right->left->val << endl;
    return 0;
}

对比总结

c++主体解法只有三行 如果当前节点为空,插入到当前节点,当前节点不为空,根据value大小,递归左子树或右子树
JavaScript的思路是判断左孩子和右孩子,一堆if else 很丑
究其原因: JavaScript没有指针,其他语言也一样,没有指针的语言,比如java
参考:算法新解

标签:Node,insert,right,JavaScript,指针,newNode,痛恨,root,left
From: https://www.cnblogs.com/dou-fu-gan/p/17077594.html

相关文章

  • C-指针参数不能直接malloc
    函数的指针参数不能直接使用malloc,直接malloc指针还是NULL。举例:voidtest_func(char*p,intnum){ p=(char*)malloc(num);}当调用test_func给p分配内存时就会失......
  • C语言-数组名可以直接做地址当指针用,但是结构体名不行;结构体可以整体赋值,数组不可以
    数组名可以直接使用下标,也可以直接当作地址使用,直接做指针或者赋值给别的指针。不能把一个数组直接赋值给另一个数组,需要单个元素逐个赋值。结构体名不能用下标,不能直接当......
  • JavaScript JSON
    什么是JSONJSON的作用:JSON是用于存储和传输数据的格式;JSON通常用于服务端向网页传输数据;什么是JSON:JSON全称为:JavaScriptObjectNotation是一种轻量级的数据交......
  • JavaScript之this、let、const关键字
    各场景下的thisthis的意思:百度翻译为:这、这么、本在JavaScript中,表示当前对象的引用关键字,没有特殊含义。在一个方法中,this表示该方法所属的对象。如果单独使用,this表......
  • 单向链表利用快慢指针
    /***单链表的中点*/constmiddleNode=(node=linkList)=>{letslow=node,fast=node;while(fast&&fast.next){slow=slow.next......
  • 【双指针】LeetCode 11. 盛最多水的容器
    题目链接11.盛最多水的容器思路在每个状态下,无论长板或短板向中间收窄一格,都会导致水槽底边宽度−1:若向内移动短板,则\(min(h[i],h[j])\)可能变大,因此下个水槽的面......
  • 指针初阶
    定义在64位中,指针是8个字节在32位中,指针是4个字节因为8个字节是指针类型的意义指针类型决定了:指针解引用的权限有多大指针类型决定了,指针走一步,能走多远(步长......
  • javaScript一个数组对象根据另一个数组排序
    varlist=[{name:'上海',code:'shanghai',},{name:'西安',code:'xian'},{name:'深圳',code:'shenzhen'},{name:'北京',code:'beijing'}];list......
  • JavaScript学习笔记—DOM之文本节点
    在DOM中,文本内容也是一个节点对象(Text),可以通过获取文本对象然后完成对它的各种操作,但这种做法会使得事情变得复杂,并不建议这么做。在大部分场景下,可以通过元素的属性来操作......
  • JavaScript 前端大文件上传
    ​对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程......