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
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- Maximum Depth of Binary Tree
- 常用代码网站·
- [Gym - 101064D Black Hills golden jewels] 二分套二分
- 数据结构实验之二叉树七:叶子问题
- eclipse properties 插件的安装方法
- 并发容器之CopyOnWriteArrayList
- Maximum Depth of Binary Tree
- Windows线程同步之互锁函数(Interlocked)
- C++operator重载问题
- C++内存管理
- linux 线程学习之条件变量
- oracle学习笔记-oracle数据库逻辑结构(2)
- Linux进程管理
- Jackson实现Object对象与Json字符串的互转
- 线段树(segment tree)