rsLQR  0.1
binary_tree.h
Go to the documentation of this file.
1 
13 #pragma once
14 #include <stdbool.h>
15 
23 typedef struct {
24  int start; // inclusive
25  int stop; // exclusive
26 } UnitRange;
27 
32 typedef struct BinaryNode_s BinaryNode;
33 struct BinaryNode_s {
34  int idx;
35  int level;
36  int levelidx;
39 
43 };
44 
64 typedef struct {
68  int depth;
70 
80 
88 
97 int ndlqr_GetIndexFromLeaf(const OrderedBinaryTree* tree, int leaf, int level);
98 
106 int ndlqr_GetIndexLevel(const OrderedBinaryTree* tree, int index);
107 
122 int ndlqr_GetIndexAtLevel(const OrderedBinaryTree* tree, int index, int level);
123 
ndlqr_GetIndexFromLeaf
int ndlqr_GetIndexFromLeaf(const OrderedBinaryTree *tree, int leaf, int level)
Get the knot point index given the leaf index at a given level.
Definition: binary_tree.c:65
BinaryNode_s::level
int level
level in the tree
Definition: binary_tree.h:35
ndlqr_FreeTree
int ndlqr_FreeTree(OrderedBinaryTree *tree)
Frees the data in tree.
Definition: binary_tree.c:59
BinaryNode_s::right_child
BinaryNode * right_child
right child
Definition: binary_tree.h:42
BinaryNode_s::left_inds
UnitRange left_inds
range of knot point indices of all left children
Definition: binary_tree.h:37
OrderedBinaryTree::root
BinaryNode * root
root of the tree. Corresponds to the "middle" knot point.
Definition: binary_tree.h:65
OrderedBinaryTree
The binary tree for the rsLQR solver.
Definition: binary_tree.h:64
OrderedBinaryTree::node_list
BinaryNode * node_list
a list of all the nodes, ordered by their knot point index
Definition: binary_tree.h:66
OrderedBinaryTree::num_elements
int num_elements
length of the OrderedBinaryTree::node_list
Definition: binary_tree.h:67
BinaryNode_s::right_inds
UnitRange right_inds
range of knot point indices of all right children
Definition: binary_tree.h:38
BinaryNode_s::left_child
BinaryNode * left_child
left child
Definition: binary_tree.h:41
ndlqr_GetIndexAtLevel
int ndlqr_GetIndexAtLevel(const OrderedBinaryTree *tree, int index, int level)
Get the index in level that corresponds to index.
Definition: binary_tree.c:89
OrderedBinaryTree::depth
int depth
total depth of the tree
Definition: binary_tree.h:68
ndlqr_BuildTree
OrderedBinaryTree ndlqr_BuildTree(int N)
Construct a new binary tree for a horizon of length N.
Definition: binary_tree.c:39
BinaryNode_s::levelidx
int levelidx
leaf index at the current level
Definition: binary_tree.h:36
BinaryNode_s::idx
int idx
knot point index
Definition: binary_tree.h:34
ndlqr_GetIndexLevel
int ndlqr_GetIndexLevel(const OrderedBinaryTree *tree, int index)
Get the level for a given knot point index.
Definition: binary_tree.c:71
UnitRange
Represents a range of consecutive integers.
Definition: binary_tree.h:23
BinaryNode_s
Definition: binary_tree.h:33
BinaryNode_s::parent
BinaryNode * parent
parent node
Definition: binary_tree.h:40