♥求二叉树高度(递归代码实现)♥
直接看代码:
#include<iostream>
#include<string>
using namespace std;//代码简单易懂,没什么好说的
class Node{char data;Node *left,*right;
public:Node(char ch){data=ch;left= nullptr;right= nullptr;}void setLeft(Node *left) {Node::left = left;}void setRight(Node *right) {Node::right = right;}char getData() const {return data;}Node *getLeft() const {return left;}Node *getRight() const {return right;}
};class Tree{Node* root;string strTree;int pos;
public:void create(string s){pos=0;strTree=s;root= createTree();}Node* createTree(){Node *t;char ch= strTree.at(pos++);if(ch=='0'){t= nullptr;}else{t=new Node(ch);t->setLeft(createTree());t->setRight(createTree());}return t;}int treeDepth(Node *t){if(t== nullptr){return 0;}//直接递归到最左边的叶子结点,然后left回溯的时候每一层都会加1int leftDepth= treeDepth(t->getLeft());//左节点回溯的过程中把当前结点的右子树递归访问int rightDepth= treeDepth(t->getRight());//故在每一个分岔点,得到的是其左右子树的最大高度(深度)return leftDepth>rightDepth?leftDepth+1:rightDepth+1;}Node *getRoot() const {return root;}
};int main(){//n次循环,计算n个二叉树的高度int n;cin>>n;for(int i=0;i<n;i++){//s为二叉树的“字符串形式”string s;cin>>s;Tree *tree=new Tree();tree->create(s);int depth=tree->treeDepth(tree->getRoot());cout<<depth<<endl;}return 0;
}
我是花花,祝自己也祝您变强了~
♥求二叉树高度(递归代码实现)♥相关推荐
- python求二叉树高度_求二叉树高度代码报错,求大佬解答
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下 class BTree(object): def __init__(self, data=None, left=None, right=None ...
- 求二叉树高度_LeetCode刷题——第二十五天(平衡二叉树)
这段时间跟二叉树杠上了,接下来还有许多二叉树的题目,虽然已经做了不少了,大多题目都涉及到了递归,也挺好,刚好有机会练习一下递归,但是遇到新的题目还是有点力不从心,还需要看参考答案,真希望有一天像汤神一 ...
- 6-6 求二叉树高度 (15 分)
** 6-6 求二叉树高度 (15 分) ** 本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef ...
- 6-1 求二叉树高度
6-1 求二叉树高度 (15 分) 本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct ...
- 6-1 求二叉树高度 (25 分)【实验三:二叉树的构造和遍历】
6-1 求二叉树高度 (25 分) 本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct ...
- 6-1 求二叉树高度 (20 分)
6-1 求二叉树高度 (20 分) 本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct ...
- java 非递归求二叉树高度_非递归算法实现二叉树高度
思路: 嘻嘻,请读者自己手动模拟.博主这里不知道怎么说. 拓展: 该算法思路也适用于 (1)每层的结点个数 (2)树的最大宽度 (3)节点位于某一层 int height(BiTree T){ if( ...
- 6-1 求二叉树高度 (20 分)(C语言版)
先说思路: 先判断是否为空树: 分别递归求左.右子树的高度: 取二者的max: 返回max+1 本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其 ...
- PTA 函数题 求二叉树高度(C语言)
本题要求给定二叉树的高度. 函数接口定义: int GetHeight( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Position; ...
最新文章
- Teradata收购Think Big Analytics 提升大数据咨询能力
- 【疯狂积累CSS】2:利用@media screen实现网页布局的自适应
- AJAX技术入门 第五节 Javascript高级知识
- 【图文详解】在电脑中打开.properties配置文件时会生成一个空的名为Java的文件问题
- esp8266是linux系统吗,ESP8266 Linux开发环境搭建
- matlab宏参赛,MATLAB杯无人机大赛 | 决赛通知!
- 小米11全系机型补齐,超大杯压场,但Pro版也不容忽视
- C++ vector和list的区别及使用场景
- matlab峰值提取,如何从MATLAB中的自相关数据中提取峰值?
- 「Java代码审计」Java代码审计基础知识「一」
- 前端开发JS--匀速运动
- 【图像分割】基于收缩系数的粒子群混合引力搜索算法多级图像阈值分割算法研究附matlab代码
- (zzulioj1005)输入3个整数,输出它们的1次幂、2次幂和3次幂。
- redirect(重定向)和forward(转发)的区别
- 计算机键盘键盘一个按键坏了,我的世界:如果键盘坏掉一个键,六种情况,哪个会影响你玩MC?...
- 计算机操作系统的阶段分为几个阶段,浅谈操作系统的发展历程
- 【ManageEngine】终端管理系统,助力华盛证券数字化转型
- 加快数字化发展 建设数字中国
- 王俊杰:苏宁AI在智慧零售上的应用
- 51Nod-1355-斐波那契的最小公倍数