**Objective:** Given a binary tree, find the height of a given node in the tree.

**Input:** A Binary Tree and a node

**Output: **Height of a given node in the tree.

**Example: **

**Approach:**

**Recursion:**

- Take a variable called height =0.
- Search for that given node in the tree using recursion.
- Each time you left or right , increase the height by 1.
- Once you found the given node, return the height.
- If till the end you wont find the node, return 0

**Complete Code: **

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.

Learn more about bidirectional Unicode characters

public class NodeHeight { | |

public int getNodeHeight(Node root, Node x, int height){ | |

if(root==null) return 0; | |

if(root==x) return height; | |

//check if the node is present in the left sub tree | |

int level = getNodeHeight(root.left,x,height+1); | |

//System.out.println(level); | |

if(level!=0) return level; | |

//check if the node is present in the right sub tree | |

return getNodeHeight(root.right,x,height+1); | |

} | |

public static void main (String[] args) throws java.lang.Exception | |

{ | |

Node root = new Node(5); | |

root.left = new Node(10); | |

root.right = new Node(15); | |

root.left.left = new Node(20); | |

Node x = new Node(25); | |

root.left.right = x; | |

root.left.right.left = new Node(35); | |

NodeHeight i = new NodeHeight(); | |

System.out.println("Height of the Node " + x.data + " is : " + i.getNodeHeight(root,x,1)); | |

} | |

} | |

class Node{ | |

int data; | |

Node left; | |

Node right; | |

public Node(int data){ | |

this.data = data; | |

this.left = null; | |

this.right = null; | |

} | |

} |

Output: Height of the Node 25 is : 3

There’s something not correct. Height of Node x => 25 should be 1 not 3. Can you check it please?

We are considering the height here as number of nodes above the particular node (including the node itself)

Still output and solution is wrong…Height of Node is the longest path till its leaf node…And it should be 1 for Node 25 not 3…but the number of levels are 3…

This code seems like calculating depth of a node. Even that is actually wrong, depth should be 2 for Node 25 and height is 1. You cant consider the height as the number of nodes above the particular node including the node itself as the right way to define height of a node. Because this is outright wrong.

http://stackoverflow.com/questions/2603692/what-is-the-difference-between-tree-depth-and-height

yes even in this problem http://algorithms.tutorialhorizon.com/find-the-maximum-depth-or-height-of-a-binary-tree/ ,the assumption of what is height is confusing and misleading as per the general standards.