File: Tree.h

package info (click to toggle)
opensurgsim 0.7.0-11
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 23,744 kB
  • sloc: cpp: 135,363; ansic: 4,206; python: 3,934; makefile: 38
file content (77 lines) | stat: -rw-r--r-- 2,329 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// This file is a part of the OpenSurgSim project.
// Copyright 2013, SimQuest Solutions Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef SURGSIM_DATASTRUCTURES_TREE_H
#define SURGSIM_DATASTRUCTURES_TREE_H

#include <memory>

namespace SurgSim
{

namespace DataStructures
{

class TreeNode;

/// Basic tree structure.
/// The tree is composed of TreeNodes, which are all accessible from the root.
/// \sa TreeNode TreeData
class Tree
{
public:
	/// Constructor. After construction, the root is null.
	Tree();

	/// Destructor
	virtual ~Tree();

	/// Sets the root of the tree.
	/// \param root The new root of the tree.
	void setRoot(std::shared_ptr<TreeNode> root);

	/// \return The root of the tree.
	std::shared_ptr<TreeNode> getRoot() const;

	/// If the trees are not of the same type, returns false;
	/// otherwise, compares with the implementation of isEqual(const Tree&).
	/// \param tree Other tree for comparison.
	/// \return true if the trees are equal; otherwise, returns false.
	bool operator==(const Tree& tree) const;

	/// If the trees are not of the same type, returns false;
	/// otherwise, compares with the implementation of isEqual(const Tree&).
	/// \param tree Other tree for comparison.
	/// \return true if the trees are not equal; otherwise, returns false.
	bool operator!=(const Tree& tree) const;

protected:
	/// Recurses through the tree, starting at the root.
	/// Override this method in derived classes to implement different comparisons.
	/// \param tree Other tree for comparison.
	/// \return true if the trees are equal; otherwise, returns false.
	virtual bool isEqual(const Tree& tree) const;

private:
	/// Root of the tree.
	std::shared_ptr<TreeNode> m_root;

};

};  // namespace DataStructures

};  // namespace SurgSim

#endif  // SURGSIM_DATASTRUCTURES_TREE_H