Can a Node Have Multiple Parents in Trees?

Click For Summary

Discussion Overview

The discussion centers around the concept of nodes in tree structures, specifically whether a node can have multiple parents under certain conditions. It explores the implications of unrooted trees, the definitions of trees in graph theory, and the relevance of these concepts in data structures and computational biology.

Discussion Character

  • Debate/contested
  • Conceptual clarification
  • Technical explanation
  • Experimental/applied

Main Points Raised

  • Some participants assert that a node cannot have more than one parent in a tree due to the absence of cycles, while questioning the implications of unrooted trees.
  • Others suggest that the concept of "parent" and "child" may not apply to unrooted trees, indicating a shift from tree structures to graph theory.
  • A participant mentions that in graph terminology, any graph without cycles is a tree, but the hierarchical relationships typically associated with trees may not hold in all cases.
  • One participant discusses the limitations of phylogenetic trees in representing species relationships, suggesting that a phylogenetic network may be a more suitable model for certain biological phenomena.
  • Another participant references C++ and multiple inheritance as an analogy, noting that such structures deviate from traditional tree definitions and become graphs instead.

Areas of Agreement / Disagreement

Participants express differing views on the definitions and implications of tree structures, particularly regarding the concept of multiple parents and the applicability of tree versus graph terminology. No consensus is reached on these points.

Contextual Notes

Participants highlight the need for clarity in definitions, particularly concerning unrooted trees and their relationship to traditional tree structures. The discussion also touches on the limitations of using trees in certain applications, such as computational biology.

mohamed el teir
Messages
88
Reaction score
1
i know that a node cannot have more than one parent given that these parents have common ancestor (because this is undirected cycle and a tree must have no cycles).
but can a node have more than one parent given that these parents don't have common ancestor (which will produce an unrooted tree i think) ??
 
Technology news on Phys.org
What circumstances would you use such a data structure? Sounds like a relational database.
 
newjerseyrunner said:
What circumstances would you use such a data structure? Sounds like a relational database.
i am not planning now to use this but as a concept i want to know is this right or wrong
 
mohamed el teir said:
[...]
but can a node have more than one parent given that these parents don't have common ancestor (which will produce an unrooted tree i think) ??

That would imply multiple roots and is not allowed (see definition section):
https://en.wikipedia.org/w/index.php?title=Tree_(data_structure)&oldid=712433755#Definition

In a tree a node has at most a single parent, which is also mentioned in the article linked above.

You can have multiple (read a collection of) trees though, but those aren't interconnected then and don't count as a (single) tree (see 5th graphic in definition section).
 
Last edited:
Dominik Tugend said:
That would imply multiple roots and is not allowed (see definition section):
https://en.wikipedia.org/w/index.php?title=Tree_(data_structure)&oldid=712433755#Definition

In a tree a node has at most a single parent, which is also mentioned in the article linked above.

You can have multiple (read a collection of) trees though, but those aren't interconnected then and don't count as a (single) tree (see 5th graphic in definition section).
so what does an unrooted tree exactly mean ?
 
  • Like
Likes   Reactions: jim mcnamara
In graph terminology, any graph without cycles is a tree. As a data structure, the navigability between nodes, like parent and child relations, usually express some kind of hierarchy between nodes which comes "on top" of the tree graph in order to serve some purpose, like for instance expressing a search tree. In principle you could have tree data structures with many or no roots depending on what the relationship means.
 
Usually the point of a tree is to know where you came from, which implies a single parent. If you're just wanting to conserve space, you could wrap all of your nodes in a reference counter.
 
Supposing your current concern is about computational molecular biology, particularly algorithmic approaches available to building phylogenetic trees.
mohamed el teir said:
i know that a node cannot have more than one parent given that these parents have common ancestor (because this is undirected cycle and a tree must have no cycles).
Yes, that is partly true about the inadequacy of using phylogenetic trees alone to represent the histories of species in question. As a matter of fact, two daughter branches may have only one parent in a binary tree.
but can a node have more than one parent given that these parents don't have common ancestor (which will produce an unrooted tree i think) ??
There are actually several types of trees used to model species relationships in phylogenetic study. The most commonly mentioned ones are rooted and unrooted trees, either of which can't be used to fully model outcomes of such events of the so-called reticulate evolution as gene transfer, hybridization, recombination, reassortment etc. These are what your concern is exactly about that whether or not a child can have two parents at the same time. We therefore have to opt to choose a better modeling tool called a phylogenetic network instead, which is also a graph being again as either rooted (e.g split, median, quasi-median, etc.) or unrooted (e.g haplotype, reticulograms) one. You can google on these terms to learn more about their applications in practice.
 
  • #10
I seem to recall that C++ allows multiple inheritance, which may be an example of what you are referring to. For example, a given object O can inherit properties from two different ancestors. It can also be the parent of multiple descendants. For a designer point of view, this turned out to be a prescription for disaster, which is why most OO languages do NOT support multiple inheritance. So we're not talking trees, per se, but once you start doing that, you no longer have a tree, as was pointed out above. You just have a graph. And you can try to avoid cycles in it, but it's not what is called a "tree" any longer in strict comp. sci. terminology.
 

Similar threads

  • · Replies 19 ·
Replies
19
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 40 ·
2
Replies
40
Views
7K
  • · Replies 20 ·
Replies
20
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 13 ·
Replies
13
Views
4K
Replies
12
Views
4K
  • · Replies 133 ·
5
Replies
133
Views
12K
  • · Replies 16 ·
Replies
16
Views
2K