小编Lis*_*mUK的帖子

如果数据在删除之间发生变化,则最小化并删除项目

我昨天问了一个问题,但不是很清楚所以这是一个更具体的问题.

我将我的minheap表示为数组.我认为我对minheaps有很好的理解,但我对其中的某个概念很模糊.Minheaps总是应该以最小的节点作为根.要删除值,将根设置为数组表示形式中的最后一个元素(叶节点),并减小数组的大小.然后使用siftDown/PercolateDown或任何您想要调用它的方式正确放置根节点.这是超级高效的.例如:

树1

这里有29个取自最后一个元素,siftDown(1)将它放置:

  1. 将29与15和38进行比较.交换29和15.
  2. 将29与25和20进行比较.交换29和20.
  3. 29比较30,29 <30因此我们完成了.

这一切都很好,但是如果在两个删除min的实例之间,其他一些数据会发生变化呢?例如:

树2

在这里,然后:

  1. 将29与15和38进行比较.交换29和15.
  2. 将29与30和32进行比较.29 <30和29 <32因此我们完成了.

1是树中的最小值,但它没有被设置为min,15已经.这对我来说是个大问题.我正在尝试实现Dijkstras算法,我也试图使用我自己的数据结构而不触及java内置的类.

所以我的问题的一个更相关的例子是:

在此输入图像描述

对于那些熟悉Dijkstras的人来说,99表示无穷远的暂定距离,其他数字表示接下来应该访问的图节点(距离最小的节点,在本例中为3).

解决方案是每次删除min时重建树,但这意味着minheap的功能会丢失,并且任何实现都会减慢到爬行速度.

抱歉,如果我不能理解这一点,但我已经坚持了几天,我真的需要一些帮助.

java dijkstra min-heap

5
推荐指数
1
解决办法
64
查看次数

React:绑定方法时无法读取未定义的属性'method()'

嘿伙计们,我正在尝试渲染一个表中的反应,该表在单击状态时将行设置为选中状态.

单击该行时,我收到如下错误: Uncaught TypeError: Cannot read property 'setSelected' of undefined

有很多关于这个的问题,解决方案似乎是将这一行添加this.setSelected = this.setSelected.bind(this);到构造函数中,以便实际可以访问该函数.

我已经知道要做到这一点,正如你在下面看到的那样,我已经完成了它,它仍然给我错误.我完全难过了.

import React, { Component } from 'react';

class ShowsList extends Component {
  constructor(props) {
    super(props);
    this.state = {selected: {showID: null, i: null}};
    this.setSelected = this.setSelected.bind(this);
  }

  setSelected(event, showID, i) {
    this.setState({
      selected: {showID, i}
    });
    console.log(this.state.selected);
  }


  render() {
    return (
      <div className="shows-list">

      <table className="table">
  <thead>
    <tr>
      <th scope="col">ID</th>
      <th scope="col">Name</th>
      <th scope="col">Location</th>
      <th scope="col">Date</th>
      <th scope="col">Time</th>
    </tr>
  </thead>
  <tbody>
    {this.props.shows.map( function(show, i) { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js reactjs

0
推荐指数
1
解决办法
608
查看次数

标签 统计

dijkstra ×1

java ×1

javascript ×1

min-heap ×1

node.js ×1

reactjs ×1