Efficient Way to Implement Tree Data Structure

59 Ansichten (letzte 30 Tage)
yutong wu
yutong wu am 22 Jun. 2019
Beantwortet: vansh gandhi am 23 Jun. 2023
Dear community, I try to use this code to implement a tree, whose node save a parameter matrix. But it is running very slowly bacause the number of nodes grow exponentially as the number of layers increasing. How could I improve this code? or is there any efficient mehod? I need to save a lot of nodes and data.
Thanks a lot.

Antworten (1)

vansh gandhi
vansh gandhi am 23 Jun. 2023
In MATLAB, one efficient way to implement a tree data structure is by using a combination of arrays and structures. Here's an example of how you can represent and manipulate a tree structure efficiently:
This implementation represents each node as a structure with two fields: value to store the value associated with the node and children to store an array of child nodes. By using arrays to store child nodes, it becomes easier to add, access, and manipulate the tree structure efficiently.
You can add more functionality to the tree implementation based on your specific requirements, such as adding parent pointers, implementing different traversal methods, or incorporating additional operations on the nodes.
% Tree node structure
node.value = [];
node.children = [];
% Create a tree
tree = node; % Initialize the root node
% Add child nodes
tree.children = [node, node, node]; % Example: tree with 3 children
% Assign values to nodes
tree.children(1).value = 10;
tree.children(2).value = 20;
tree.children(3).value = 30;
% Add child nodes to children
tree.children(1).children = [node, node]; % Example: first child has 2 children
tree.children(2).children = node; % Example: second child has 1 child
% Assign values to child nodes
tree.children(1).children(1).value = 100;
tree.children(1).children(2).value = 200;
tree.children(2).children.value = 300;
% Accessing values and children
rootValue = tree.value;
childValue = tree.children(1).value;
grandchildValue = tree.children(1).children(1).value;
numChildren = numel(tree.children);
hasChildren = ~isempty(tree.children);
% Traverse the tree (pre-order traversal)
function preorderTraversal(node)
if ~isempty(node)
disp(node.value); % Perform desired operations on the node
for i = 1:numel(node.children)
preorderTraversal(node.children(i));
end
end
end
% Perform preorder traversal of the tree
preorderTraversal(tree);
Function definitions in a script must appear at the end of the file.
Move all statements after the "preorderTraversal" function definition to before the first local function definition.

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by