Diagonal Traversal of Binary Tree

Diagonal Traversal of Binary Tree

Consider lines of slope -1 passing between nodes. Given a Binary Tree, print all diagonal elements in a binary tree belonging to same line. If the diagonal element are present in two different subtress then left subtree diagonal element should be taken first and then right subtree.?


?? View Full Code ??

Approach :

  • Breadth-First Traversal with Queue: Use a queue to perform level-wise processing. The right child will always belong to the same diagonal, and the left child will belong to the next diagonal.
  • Push Nodes: Push the root node into the queue to start.
  • Traversal: For each node at the front of the queue, add it to the result list. Move to the right child (staying in the same diagonal) and add left children to the queue (next diagonal).
  • Repeat: Continue until the queue is empty, processing nodes level by level and capturing diagonal elements in order.

vector<int> diagonal(Node *root)
{
   
   vector<int>ans;
   
   if(root == NULL){
       return ans ;
   }
   
   queue<Node*>q;
   q.push(root);
   
   while(!q.empty()){
       Node* frontNode = q.front();
       q.pop();
       
       while(frontNode != NULL){
           ans.push_back(frontNode->data);
           if(frontNode->left){
               q.push(frontNode->left);
           }
           frontNode = frontNode->right;
       }
       
   }
   return ans;
   
}        

  1. Queue Initialization: We initialize a queue that will store nodes based on diagonal lines. We start by adding the root node to the queue.
  2. For each node in the queue:

  • Add its data to the result (ans).
  • Check if it has a left child and, if so, push it to the queue (since it belongs to the next diagonal).
  • Move to the right child, as it belongs to the same diagonal line.

The result is stored in the vector ans, which contains the diagonal elements in the desired order.

Time Complexity: O(N)

Space Complexity: O(N)

?? GitHub Repo ??


Anmol .

Student || 3??Codechef (Max rating -1629) || 5?? C++/Problem Solving Hackerrank ||Codeforces Max Rating -1166|| CP Enthusiast || Problem Solver & Daily Streak Gold??Codechef || 300+Codechef || 200+ Codeforces

1 个月

Very informative??

要查看或添加评论,请登录

Pranay Saini的更多文章

  • Maximum sum of nodes in Binary tree such that no two are adjacent

    Maximum sum of nodes in Binary tree such that no two are adjacent

    Given a binary tree with a value associated with each node, we need to choose a subset of these nodes such that sum of…

    2 条评论
  • Largest Subtree Sum

    Largest Subtree Sum

    Given a binary tree. The task is to find subtree with maximum sum in the tree and return its sum.

    2 条评论
  • Sum of Longest Blood Line of Tree

    Sum of Longest Blood Line of Tree

    Given a binary tree having n nodes. Find the sum of all nodes on the longest path from root to any leaf node.

  • Check Mirror Tree

    Check Mirror Tree

    Given two n-ary trees. Check if they are mirror images of each other or not.

    2 条评论
  • Duplicate Subtree

    Duplicate Subtree

    Given a binary tree, find out whether it contains a duplicate sub-tree of size two or more, or not. Note: Two same leaf…

    2 条评论
  • Leaves at Same Level

    Leaves at Same Level

    Given a binary tree with n nodes, determine whether all the leaf nodes are at the same level or not. Return true if all…

  • Sum Tree

    Sum Tree

    Given a Binary Tree. Check for the Sum Tree for every node except the leaf node.

  • Transform to Sum Tree

    Transform to Sum Tree

    Given a Binary Tree of size N , where each node can have positive or negative values. Convert this to a tree where each…

    2 条评论
  • Boundary Traversal of Binary Tree

    Boundary Traversal of Binary Tree

    Given a Binary Tree, find its Boundary Traversal. The traversal should be in the following order: Left boundary nodes:…

  • Balanced Tree Check

    Balanced Tree Check

    A binary tree is height-balanced if, for every node in the tree, the difference in heights of the left and right…

    2 条评论

社区洞察

其他会员也浏览了