]> rtime.felk.cvut.cz Git - hubacji1/rrts.git/commitdiff
Use delete kd tree in deinit
authorJiri Vlasak <hubacji1@fel.cvut.cz>
Wed, 29 Jan 2020 11:01:00 +0000 (12:01 +0100)
committerJiri Vlasak <hubacji1@fel.cvut.cz>
Wed, 29 Jan 2020 11:01:00 +0000 (12:01 +0100)
api/rrtext.h
src/rrtext7.cc

index 6c3a30d9958088f871d20791e2d3abf5b33d2af6..2081c56eb99c25cff88a2e86fcdca36020c5f7f7 100644 (file)
@@ -38,6 +38,7 @@ class RRTExt7 : public virtual RRTS {
                                 KdNode(RRTNode *n);
                 };
                 KdNode *kdroot_ = nullptr;
+                void delete_kd_nodes(KdNode *n);
                 void store_node(RRTNode *n, KdNode *&r, int l);
                 void nn(RRTNode *&n, RRTNode &t, KdNode *r, int l, double &d);
         public:
index 07f7c6c6be69db2ca3fa9e3c8de77abb62fe505b..ab52db7757b49f5af1bb497f6f2a222ec08925ca 100644 (file)
@@ -7,6 +7,17 @@ RRTExt7::KdNode::KdNode(RRTNode *n)
 {
 }
 
+void RRTExt7::delete_kd_nodes(KdNode *n)
+{
+        if (!n)
+                return;
+        if (n->left() != nullptr)
+                delete_kd_nodes(n->left());
+        if (n->right() != nullptr)
+                delete_kd_nodes(n->right());
+        delete n;
+}
+
 void RRTExt7::store_node(RRTNode *n, KdNode *&r, int l)
 {
         if (r == nullptr)
@@ -55,6 +66,7 @@ void RRTExt7::init()
 
 void RRTExt7::deinit()
 {
+        this->delete_kd_nodes(this->kdroot_);
 }
 
 void RRTExt7::store_node(RRTNode n)