Given a tree of N nodes and N-1 edges. The task is to print the DFS of the subtree of a given node for multiple queries. The DFS must include the given node as the root of the subtree.
In the above tree, if 1 is given as the node, then the DFS of subtree will be 1 2 4 6 7 5 3.
If 2 is given as the node, then the DFS of the subtree will be 2 4 6 7 5..
- Add the edges between the nodes in an adjacency list.
- Call DFS function to generate the DFS of the complete tree.
- Use a under array to store the height of the subtree under the given node including the node.
- In the DFS function, keep incrementing the size of subtree on every recursive call.
- Mark the node index in the DFS of complete using hashing.
- The DFS of a subtree of a node will always be a contiguous subarray starting from the node(say index ind) to (ind+height of subtree).
- Get the index of node which has been stored using hashing and print the nodes from original DFS till index = ind + height of subtree which has been stored in under[node].
Below is the implementation of the above approach.
The DFS of subtree 2: 2 4 6 7 5 The DFS of subtree 4: 4 6 7
Time Complexity: O( N + M ), where N is the number of nodes and M is the number of edges for pre-calculation and O(N) for queries in worst case.
Auxiliary Space: O(N)
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- Queries for M-th node in the DFS of subtree
- Count of nodes having odd divisors in the given subtree for Q queries
- Queries for the number of nodes having values less than V in the subtree of a Node
- Subtree of all nodes in a tree using DFS
- Subtree with given sum in a Binary Tree
- Even size subtree in n-ary tree
- Check if a binary tree is subtree of another binary tree using preorder traversal : Iterative
- Find largest subtree sum in a tree
- Duplicate subtree in Binary Tree | SET 2
- Euler Tour | Subtree Sum using Segment Tree
- Find the largest BST subtree in a given Binary Tree | Set 1
- Check if the given Binary Tree have a Subtree with equal no of 1's and 0's
- Find the Kth node in the DFS traversal of a given subtree in a Tree
- Find the largest Complete Subtree in a given Binary Tree
- Find the largest Perfect Subtree in a given Binary Tree
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. 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.