二叉树的深度
来源:互联网 发布:职场色诱 知乎 编辑:程序博客网 时间:2024/06/04 18:58
点:二叉树
题意:相当于二叉树的最高层数,如果只有一个节点则为1,否则为最低一层叶子节点所在层
剑指offer面试题39
思路:按后序遍历,不断递归获取左右子树直到叶子节点为止,按左右子树深度最高者
代码“:
#include <iostream>#include <random>template<class T> struct Node { T val; Node<T> *lchild; Node<T> *rchild; Node(T _val):val(_val), lchild(nullptr), rchild(nullptr) {}};template<class T> class Btree { Node<T> *root;public: Btree():root(nullptr){} void Free (Node<T> *cur) { if (cur) { Free(cur->lchild); Free(cur->rchild); delete cur; cur = nullptr; } } ~Btree () { Free(root); } void Add (int val) { if (!root) { root = new Node<T>(val); } else { Node<T> *cur = root; while (cur) { if (cur->val > val) { if (cur->lchild) { cur = cur->lchild; } else { Node<T> *newnode = new Node<T>(val); cur->lchild = newnode; } } else if (cur->val < val) { if (cur->rchild) { cur = cur->rchild; } else { Node<T> *newnode = new Node<T>(val); cur->rchild = newnode; } } else { break; } } } } void Pre (Node<T> *cur) { if (cur) { std::cout << cur->val << "\t"; Pre(cur->lchild); Pre(cur->rchild); } } void pre () { Pre(root); std::cout << std::endl; } int depth (Node<T> *cur, int dep) { if (cur) { int ld = depth(cur->lchild, dep + 1); int rd = depth(cur->rchild, dep + 1); return (ld > rd)?ld:rd; } else { return dep - 1; } } int Depth () { depth(root, 1); }};int main () { std::random_device rd; Btree<int> bt; for (int i = 0; i < 15; i++) { bt.Add(rd() % 100); } bt.pre(); std::cout << bt.Depth() << std::endl; return 0;}
阅读全文
0 0
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 二叉树的深度
- 使用pytorch进行图像的顺序读取。
- MySQL的btree索引和hash索引的区别
- 标准学生类的设计、测试/ / /
- Unix常用指令
- Reflow和Repaint的基本认识和优化
- 二叉树的深度
- 61. Rotate List
- 【亲测】win 10下使用conda安装环境,进行flask web开发
- C++调用Object-C
- 解决Your project contains C++ files but it is not using a supported native build system
- 国家常用代号 for Mysql数据库
- 欢迎使用CSDN-markdown编辑器
- 二分查找的递归和非递归实现
- 如何使用ajax传递字符串数组