面试题08 - 二叉树的深度 【树】

来源:互联网 发布:局域网yum配置 编辑:程序博客网 时间:2024/05/22 15:49

题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
例如:输入二叉树:
                                            10
                                          /     \
                                        6        14
                                      /         /   \
                                    4         12     16
输出该树的深度3。
#include <iostream> // 递归,深搜。你一定要理解它! dfs : 能进则进,进不了则换,换不了则退!#include <string>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>#include <vector>#include <stack>#include <deque>#include <queue>#include <bitset>#include <list>#include <map>#include <set>#include <iterator>#include <algorithm>#include <functional>#include <utility>#include <sstream>#include <climits>#include <cassert>#define BUG puts("here!!!");using namespace std;struct Node {public :int value;Node* lchild;Node* rchild;};Node* creat() {int x;cin >> x;if(x == -1) return NULL;Node* root = new Node();root->value = x;root->lchild = creat();root->rchild = creat();return root;}int treeDep(Node* root) {if(root == NULL) return 0;int nLeft = treeDep(root->lchild);int nRight = treeDep(root->rchild);return (nLeft > nRight ? nLeft : nRight) + 1;}int main() {Node* root = creat();cout << treeDep(root) << endl;return 0;}