13

If we make reference to the parent for each node in a tree, do we still have a tree (by definition) anymore?

Wikipedia definition is:

In computer science, a tree is a widely used abstract data type (ADT) or data structure implementing this ADT that simulates a hierarchical tree structure, with a root value and subtrees of children, represented as a set of linked nodes.

enter image description here

Mohsen
  • 1,970
  • 3
  • 22
  • 32
  • 3
    What makes you doubt it? –  Jan 05 '14 at 01:00
  • 2
    As long as the _parent_ links and the _children_ links are distinct, you can assume that the _children_ links make the tree and the _parent_ links are just an implementation detail. – mouviciel Jan 06 '14 at 10:13
  • What brought me here was also pulled Wikipedia page: *For example, looking at a tree as a whole, one can talk about "the parent node" of a given node, but in general, as a data structure, a given node only contains the list of its children but does not contain a reference to its parent (if any).* – andrewlundy Oct 06 '21 at 15:10
  • By `child node reference to the parent node` , if that means one node may have multiple parent nodes, it is not a tree. it is a directed graph. In tree, one node may have only one parent at most. – Tiina May 05 '23 at 03:43

2 Answers2

20

A tree is a connected acyclic graph. In the case where we have "parent" links this would just be an undirected tree, but definitely still a tree. If you were to specify that the example is a directed graph it would not be considered a tree (but of course there's no way of telling from the code which was intended).

Some computer science "trees" will include, for instance, links from each node back to the root, or links along each level of a B+ tree. A computer scientist would probably still call these things trees, a mathematician would not.

U2EF1
  • 718
  • 4
  • 5
  • 2
    +1 for pointing out that having parent links (links in both directions) makes the graph equivalent to an undirected graph. – Giorgio Jan 05 '14 at 09:33
  • Can we say **any acyclic graph** is a tree? – Mohsen Jan 05 '14 at 16:41
  • 4
    @Mohsen A (directed) acyclic graph that includes a node with two parents is not a tree – Izkata Jan 05 '14 at 21:23
  • @Mohsen: You can also define a tree as a graph with a distinct **root node** such that there exists a unique path from the root to any other node. Clearly, there are acyclic graphs that do not fulfill this definition. – Giorgio Sep 28 '14 at 13:39
-2

Let's follow this definition. Will surely get the ans.

A connected graph G is called a tree if the removal of any of its edges makes G disconnected. So, as the graph given above, does not support this statement, so we can not say that the graph given is a tree.

For more info you can continue this link.

http://win.ua.ac.be/~vanhoudt/graph/trees.pdf

dip
  • 1
  • 1
    You are using the mathematician's point of view here. Note that U2EF1 says in their answer: *A computer scientist would probably still call these things trees, a mathematician would not.*. Your answer is basically the same as Uiquité's in this respect. – Martijn Pieters Sep 28 '14 at 09:11
  • The cited paper assumes undirected graphs. This definition of trees is not appropriate for a directed graph, because (a) it would have to mention that DAGs including trees can at most be *weakly* connected, and because (b) it allows multiple root nodes. Now notice that the graph in the question is a directed graph (albeit one with backlinks), and that there still is a concept of a root node (hierarchy is denoted by vertical position). A better definition for a directed tree would be: “A (directed) tree is empty or has exactly one root node from which all nodes are reachable”. – amon Sep 29 '14 at 09:20