5 #ifndef BPP_GRAPH_TREEGRAPH_H 6 #define BPP_GRAPH_TREEGRAPH_H 13 #include "../Exceptions.h" 14 #include "../Numeric/VectorTools.h" 27 virtual bool isValid()
const = 0;
137 virtual void unRoot(
bool joinRootSons) = 0;
173 #endif // BPP_GRAPH_TREEGRAPH_H std::vector< Graph::NodeId > removeSons(Graph::NodeId node)
virtual void rootAt(Graph::NodeId newRoot)=0
virtual Graph::NodeId MRCA(const std::vector< Graph::NodeId > &nodes) const =0
virtual std::vector< Graph::NodeId > getNodePathBetweenTwoNodes(Graph::NodeId nodeA, Graph::NodeId nodeB, bool includeAncestor=true) const =0
virtual bool isValid() const =0
virtual bool isLeaf(Graph::NodeId node) const =0
virtual void unRoot(bool joinRootSons)=0
virtual void setOutGroup(Graph::NodeId newOutGroup)=0
virtual std::vector< Graph::NodeId > getSons(Graph::NodeId node) const =0
virtual size_t getNumberOfSons(Graph::NodeId node) const =0
Get the number of sons node.
virtual bool hasFather(Graph::NodeId node) const =0
virtual std::unique_ptr< Graph::EdgeIterator > branchesIterator(Graph::NodeId node)=0
virtual void setFather(Graph::NodeId node, Graph::NodeId fatherNode)=0
virtual std::vector< Graph::EdgeId > getEdgePathBetweenTwoNodes(Graph::NodeId nodeA, Graph::NodeId nodeB) const =0
virtual std::vector< Graph::EdgeId > getBranches(Graph::NodeId node) const =0
virtual std::vector< Graph::NodeId > getLeavesUnderNode(Graph::NodeId node) const =0
virtual Graph::EdgeId getEdgeToFather(Graph::NodeId node) const =0
virtual std::vector< Graph::EdgeId > getSubtreeEdges(Graph::NodeId localRoot) const =0
virtual std::unique_ptr< Graph::NodeIterator > sonsIterator(Graph::NodeId node)=0
virtual Graph::NodeId getFatherOfNode(Graph::NodeId nodeid) const =0
virtual std::vector< Graph::NodeId > getSubtreeNodes(Graph::NodeId localRoot) const =0
virtual void addSon(Graph::NodeId node, Graph::NodeId sonNode)=0
virtual void removeSon(Graph::NodeId node, Graph::NodeId son)=0