Maximum Depth of Binary Tree

来源:互联网 发布:html读取php 编辑:程序博客网 时间:2024/06/08 02:21

Description:

Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the
farthest leaf node.

分析:
同上题

代码:

#include <iostream>#include <vector>#include <stack>#include <algorithm>#include <queue>#define Elementype intusing namespace std;int index = 0;typedef struct TreeNode //树结点{    Elementype  val;    TreeNode *left;    TreeNode *right;    TreeNode(Elementype x) : val(x), left(nullptr), right(nullptr) {}} *Tree;//使用先序遍历创建创建二叉树void MakeBinaryTree(Tree &T, Elementype value[]){    Elementype  c = value[index++];    if (c == '#')        T = nullptr;    else    {        T = new TreeNode(c);        MakeBinaryTree(T->left, value);        MakeBinaryTree(T->right, value);    }}//递归int maxDepth(Tree root){    if (root == nullptr)        return 0;    return max(maxDepth(root->left),maxDepth(root->right)) + 1;}//迭代,广度优先遍历int maxDepthBFS(Tree root){    if (!root)        return 0;    int depth = 1;    queue<Tree> que;    queue<Tree> que2;    que.push(root);    while (!que.empty())    {        Tree p = que.front();        que.pop();        if (p->left)            que2.push(p->left);        if (p->right)            que2.push(p->right);        if (que.empty() && !que2.empty())        {            swap(que, que2);            depth++;        }    }    return depth;}//先序遍历void preOrderTraversal(Tree root){    stack<Tree> sk;    Tree p = root;    if (p)        sk.push(p);    while (!sk.empty())    {        p = sk.top();        cout << p->val<<" ";        sk.pop();        if (p->right)            sk.push(p->right);        if (p->left)            sk.push(p->left);    }}int main(){    Tree root = nullptr;        //根结点    Elementype data[11] = { 3, 9, '#', '#', 20, 15, '#', '#', 7, '#', '#' };    MakeBinaryTree(root, data);    cout << "先序遍历: ";    preOrderTraversal(root);    cout << endl;    cout << "最大深度,递归:" << maxDepth(root) << endl;    cout << "最大深度,迭代:" << maxDepthBFS(root) << endl;    system("pause");    return 0;}

测试:

这里写图片描述

0 0
原创粉丝点击