# Check if a given tree graph is linear or not

Given a tree check if it is linear or not.

1 / \ 2 3 Linear as we can form a lime 2 1 3

1 / \ 2 3 / \ 4 5 Not linear

Examples:

Input : 3 1 2 1 3 Output : YES Explanation: The Tree formed is 2-1-3 which is a linear one. Input : 4 1 2 2 3 4 2 Output : NO

**Approach:**The given tree would be linear only if n-2 of its nodes have indegree == 2 or number of nodes, n==1.

`// A Java Program to check whether a graph is ` `// Linear or not ` `import` `java.io.*; ` `import` `java.util.*; ` ` ` `// This class represents a undirected graph ` `// using adjacency list representation ` `class` `Graph { ` ` ` `private` `int` `V; ` `// No. of vertices ` ` ` ` ` `// Adjacency List ` ` ` `private` `LinkedList<Integer> adj[]; ` ` ` ` ` `// Constructor ` ` ` `Graph(` `int` `v) ` ` ` `{ ` ` ` `V = v; ` ` ` `adj = ` `new` `LinkedList[v]; ` ` ` `for` `(` `int` `i = ` `0` `; i < v; ++i) ` ` ` `adj[i] = ` `new` `LinkedList<Integer>(); ` ` ` `} ` ` ` ` ` `// Function to add an edge into the graph ` ` ` `void` `addEdge(` `int` `v, ` `int` `w) ` ` ` `{ ` ` ` `adj[v].add(w); ` ` ` `adj[w].add(v); ` ` ` `} ` ` ` ` ` `// Returns true if the graph is linear, ` ` ` `// else false. ` ` ` `boolean` `isLinear() ` ` ` `{ ` ` ` `// If the number of vertice is 1 then ` ` ` `// the tree is always Linear ` ` ` `if` `(V == ` `1` `) ` ` ` `return` `true` `; ` ` ` `int` `count = ` `0` `; ` ` ` ` ` `// Counting the number of vertices ` ` ` `// with indegree 2 ` ` ` `for` `(` `int` `i = ` `0` `; i < V; i++) { ` ` ` `if` `(adj[i].size() == ` `2` `) ` ` ` `count++; ` ` ` `} ` ` ` `if` `(count == V - ` `2` `) ` ` ` `return` `true` `; ` ` ` `else` ` ` `return` `false` `; ` ` ` `} ` ` ` ` ` `// Driver method ` ` ` `public` `static` `void` `main(String args[]) ` ` ` `{ ` ` ` `// Create a graph given in the above example ` ` ` `Graph g1 = ` `new` `Graph(` `3` `); ` ` ` `g1.addEdge(` `0` `, ` `1` `); ` ` ` `g1.addEdge(` `0` `, ` `2` `); ` ` ` `if` `(g1.isLinear()) ` ` ` `System.out.println(` `"YES"` `); ` ` ` `else` ` ` `System.out.println(` `"NO"` `); ` ` ` `} ` `} ` |

*chevron_right*

*filter_none*

Output :

YES

## Recommended Posts:

- Check if a given graph is tree or not
- Check whether given degrees of vertices represent a Graph or Tree
- Difference between graph and tree
- Given level order traversal of a Binary Tree, check if the Tree is a Min-Heap
- Check whether a given graph is Bipartite or not
- Check for star graph
- Check if a given graph is Bipartite using DFS
- Check whether a binary tree is a complete tree or not | Set 2 (Recursive Solution)
- Check if a given Binary Tree is height balanced like a Red-Black Tree
- Tree, Back, Edge and Cross Edges in DFS of Graph
- DFS for a n-ary tree (acyclic graph) represented as adjacency list
- Check if a directed graph is connected or not
- Check if the given permutation is a valid DFS of graph
- Check if the given graph represents a Bus Topology
- Maximum Possible Edge Disjoint Spanning Tree From a Complete Graph

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.