2021-07-28 21:20:02 +02:00
|
|
|
<!DOCTYPE html>
|
|
|
|
|
|
|
|
<head>
|
2022-05-01 17:10:46 +02:00
|
|
|
<meta charset="UTF-8" />
|
2022-05-16 15:58:46 +02:00
|
|
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
2022-05-15 21:57:36 +02:00
|
|
|
<link
|
2022-05-16 15:58:46 +02:00
|
|
|
href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css"
|
2022-05-15 21:57:36 +02:00
|
|
|
rel="stylesheet"
|
2022-05-16 15:58:46 +02:00
|
|
|
integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor"
|
2022-05-15 21:57:36 +02:00
|
|
|
crossorigin="anonymous"
|
|
|
|
/>
|
2021-07-28 21:20:02 +02:00
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
2022-05-17 15:18:56 +02:00
|
|
|
<nav class="navbar navbar-expand-lg bg-light">
|
|
|
|
<div class="container-fluid">
|
|
|
|
<a class="navbar-brand" href="#">WAVL Tree Visualization</a>
|
|
|
|
<button
|
|
|
|
class="navbar-toggler"
|
|
|
|
type="button"
|
|
|
|
data-bs-toggle="collapse"
|
|
|
|
data-bs-target="#navbarNav"
|
|
|
|
aria-controls="navbarNav"
|
|
|
|
aria-expanded="false"
|
|
|
|
aria-label="Toggle navigation"
|
|
|
|
>
|
|
|
|
<span class="navbar-toggler-icon"></span>
|
|
|
|
</button>
|
|
|
|
<div class="collapse navbar-collapse" id="navbarNav">
|
|
|
|
<ul class="navbar-nav">
|
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link active" aria-current="page" href="#"
|
|
|
|
>Visualization</a
|
|
|
|
>
|
|
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
|
|
<a class="nav-link" href="./comparator.html">Comparator</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</nav>
|
|
|
|
|
2022-05-16 15:58:46 +02:00
|
|
|
<div class="container px-5 py-5">
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-auto">
|
|
|
|
<form class="row" id="insertTree" onSubmit="return insertCallback()">
|
|
|
|
<div class="col-auto">
|
|
|
|
<input
|
|
|
|
class="form-control"
|
|
|
|
id="insertInput"
|
|
|
|
type="text"
|
|
|
|
placeholder="Number to insert"
|
|
|
|
autofocus
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div class="col-auto">
|
|
|
|
<button class="btn btn-primary" type="submit">Insert</button>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="col-auto">
|
|
|
|
<form class="row" id="deleteTree" onSubmit="return deleteCallback()">
|
|
|
|
<div class="col-auto">
|
|
|
|
<input
|
|
|
|
class="form-control"
|
|
|
|
id="deleteInput"
|
|
|
|
type="text"
|
|
|
|
placeholder="Number to delete"
|
|
|
|
/>
|
|
|
|
</div>
|
|
|
|
<div class="col-auto">
|
|
|
|
<input class="btn btn-primary" type="submit" value="Delete" />
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<h4 class="col-auto">Choose a tree:</h4>
|
|
|
|
<div class="btn-group col-auto" role="group">
|
|
|
|
<input
|
|
|
|
type="radio"
|
|
|
|
class="btn-check"
|
|
|
|
name="treeSelection"
|
|
|
|
id="wavlTreeBtn"
|
|
|
|
checked
|
|
|
|
autocomplete="off"
|
|
|
|
onclick="switchTree(WAVLTree)"
|
|
|
|
/>
|
|
|
|
<label class="btn btn-outline-primary" for="wavlTreeBtn">WAVL</label>
|
|
|
|
|
|
|
|
<input
|
|
|
|
type="radio"
|
|
|
|
class="btn-check"
|
|
|
|
name="treeSelection"
|
|
|
|
id="avlTreeBtn"
|
|
|
|
autocomplete="off"
|
|
|
|
onclick="switchTree(AVLTree)"
|
|
|
|
/>
|
|
|
|
<label class="btn btn-outline-primary" for="avlTreeBtn">AVL</label>
|
|
|
|
|
|
|
|
<input
|
|
|
|
type="radio"
|
|
|
|
class="btn-check"
|
|
|
|
name="treeSelection"
|
|
|
|
id="ravlTreeBtn"
|
|
|
|
autocomplete="off"
|
|
|
|
onclick="switchTree(RAVLTree)"
|
|
|
|
/>
|
|
|
|
<label class="btn btn-outline-primary" for="ravlTreeBtn">rAVL</label>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="row py-3">
|
|
|
|
<div class="col-3"></div>
|
|
|
|
<div class="col alert alert-info" role="alert">
|
|
|
|
<h5 class="alert-heading">Current operation</h5>
|
|
|
|
<p id="comment"></p>
|
|
|
|
</div>
|
|
|
|
<div class="col-3"></div>
|
|
|
|
</div>
|
|
|
|
|
2022-05-16 18:23:05 +02:00
|
|
|
<div class="row py-3">
|
|
|
|
<div class="col" id="graph" style="text-align: center"></div>
|
|
|
|
|
|
|
|
<div class="col-2 px-1">
|
|
|
|
<div class="row">
|
|
|
|
<h6 class="row">Prepared scenarios</h6>
|
|
|
|
|
|
|
|
<div
|
|
|
|
class="btn-group-vertical"
|
|
|
|
role="group"
|
2022-05-17 14:39:09 +02:00
|
|
|
aria-label="Prepared scenarios"
|
2022-05-16 18:23:05 +02:00
|
|
|
>
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
class="btn btn-outline-primary"
|
|
|
|
onclick="prepareSingleRotationAfterDelete()"
|
2022-05-17 14:39:09 +02:00
|
|
|
data-bs-toggle="tooltip"
|
|
|
|
data-bs-placement="right"
|
|
|
|
title="This scenario shows a single rotation being performed after a deletion of key 2 from the prepared tree."
|
2022-05-16 18:23:05 +02:00
|
|
|
>
|
|
|
|
Single rotation after delete
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
class="btn btn-outline-primary"
|
|
|
|
onclick="prepareDoubleRotationAfterDelete()"
|
2022-05-17 14:39:09 +02:00
|
|
|
data-bs-toggle="tooltip"
|
|
|
|
data-bs-placement="right"
|
|
|
|
title="This scenario shows a double rotation being performed after a deletion of key 1 from the prepared tree."
|
2022-05-16 18:23:05 +02:00
|
|
|
>
|
|
|
|
Double rotation after delete
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
type="button"
|
|
|
|
class="btn btn-outline-primary"
|
|
|
|
onclick="prepareDemotionOfBothNodesDuringDelete()"
|
2022-05-17 14:39:09 +02:00
|
|
|
data-bs-toggle="tooltip"
|
|
|
|
data-bs-placement="right"
|
|
|
|
title="This scenario shows a demotion of both parent and sibling of the current node after a deletion of key 2 from the prepared tree."
|
2022-05-16 18:23:05 +02:00
|
|
|
>
|
2022-05-16 18:57:29 +02:00
|
|
|
Demotion of both parent and sibling during deletion
|
2022-05-16 18:23:05 +02:00
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2022-05-16 15:58:46 +02:00
|
|
|
</div>
|
2022-05-01 17:10:46 +02:00
|
|
|
|
|
|
|
<script src="https://d3js.org/d3.v5.min.js"></script>
|
|
|
|
<script src="https://unpkg.com/@hpcc-js/wasm@0.3.11/dist/index.min.js"></script>
|
|
|
|
<script src="https://unpkg.com/d3-graphviz@3.0.5/build/d3-graphviz.js"></script>
|
|
|
|
|
2022-05-07 16:53:04 +02:00
|
|
|
<script src="utils.js"></script>
|
|
|
|
|
2022-05-01 17:10:46 +02:00
|
|
|
<script src="node.js"></script>
|
|
|
|
<script src="ranked_tree.js"></script>
|
|
|
|
<script src="avl.js"></script>
|
|
|
|
<script src="wavl.js"></script>
|
|
|
|
<script src="ravl.js"></script>
|
|
|
|
|
2022-05-07 16:54:28 +02:00
|
|
|
<script src="recorder.js"></script>
|
2022-05-16 15:58:46 +02:00
|
|
|
|
|
|
|
<script
|
|
|
|
src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js"
|
|
|
|
integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2"
|
|
|
|
crossorigin="anonymous"
|
|
|
|
></script>
|
2022-05-17 14:39:09 +02:00
|
|
|
<script src="visualization.js"></script>
|
2021-07-28 21:20:02 +02:00
|
|
|
</body>
|