如何使用C++递归来实现在BST(Binary Search Tree)里将所有的叶子节点上的数字求和
来源:互联网 发布:ubuntu 重装ssh 编辑:程序博客网 时间:2024/06/04 23:33
小编先翻译什么是BST (Binary Search Tree),对于中文计算机词汇是二叉搜索树,关于这个知识点,小编就不在这里进行解释了,大家还是自行百度吧!或者看看有关数据结构的书就知道了。
那什么情况节点才是属于叶子节点呢?那就是这个节点没有左右两个孩子节点,用代码就是这样子表示:!head->left 和 !head->right
下面就是代码的展示:
//This is the table.h file#include<iostream>#include<cctype>#include<cstring>using namespace std;struct node{ int data; node * left; node * right;};class table{ public: //Calculate the sum of every leaf's data (nodes that have no children) in a BST int sum_every_leaf(); private: //Calculate the sum of every leaf's data(nodes that have no children) in a BST //这个函数是使用递归的 int sum_every_leaf(node * root); node * root;};
下面是在table.cpp文件里实现这两个函数
//This is the table.cpp#include "table.h"int table::sum_every_leaf(){ return sum_every_leaf(root);}int table::sum_every_leaf(node * root){ if(!root) return 0; if(!root->left && !root->right) { return root->data + sum_every_leaf(root->left) + sum_every_leaf(root->right); } return sum_every_leaf(root->left) + sum_every_leaf(root->right);}
下面是在主函数里进行调用这个函数,我的老师教我们这个也叫做client function
//This is the main file#include "table.h"int main(){ table object; int result = object.sum_every_leaf(); cout<<"The result is: "<<result<<endl; return 0;}
是不是感觉用递归来实现,代码很简洁和简短呢!其实这个用递归的一个特点。说实话,小编都快忘记怎么用循环来实现了。
长话短说,下面是展示结果的截图:
小编觉得有可能大家对这个结果看不明白,没事,小编会在白纸上根据这个运行结果来画出这个BST的结构出来,大家一眼就能看的清楚什么回事了。
下面是小编根据结果展示的树结果在纸上画的BST
用圆圈圈起来的是叶子节点,然后将这些叶子节点进行求和,就能算出总和是127了。
是不是感觉挺简单的。以后小编还会继续写关于如何用C++递归来实现数据结构中的不同问题,敬请期待吧!
希望这篇文章对大家有所帮助!
阅读全文
1 0
- 如何使用C++递归来实现在BST(Binary Search Tree)里将所有的叶子节点上的数字求和
- 如何使用C++递归来实现查找BST(Binary Search Tree)的最大高度
- 如何用C++递归在BST(Binary Search Tree) 数有几个节点大于根节点的数字
- 使用递归来实现在ARR里如何删除每一个list的第一个节点不是数字‘2’
- 如何用C++递归来删除所有的BST节点
- BST(Binary Search Tree,二叉查找树,二叉排序树)c的实现(部分函数不知如何调用)
- Binary Tree Paths 二叉树所有从跟节点到叶子节点的路径
- 二叉搜索树(Binary Search Tree)的递归和非递归代码实现(C++)
- 二叉搜索树(Binary Search Tree)的递归和非递归代码实现(C++)
- Inorder Successor in Binary Search Tree BST中找中序遍历的后继节点
- Tree_Graph Inorder Successor in Binary Search Tree BST中找中序遍历的后继节点 @CareerCup
- Binary Search Tree (BST)
- Binary Search Tree (BST)
- Recover Binary Search Tree BST找乱序的两个元素 @LeetCode
- Binary Search Tree(BST)二叉搜索树的实现-java语言
- 二分查找树的C++实现 Binary Search Tree(BST)
- 不使用递归和堆栈,遍历二叉树所有叶子节点的算法
- 在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点)
- 约会
- Linux网桥
- 安卓端app车牌识别TF卡授权
- 基于方法的权限控制
- Java中随机抽取List集合中特定个数的子项
- 如何使用C++递归来实现在BST(Binary Search Tree)里将所有的叶子节点上的数字求和
- 欢迎使用CSDN-markdown编辑器
- 百度UEditor编辑器使用教程与使用方法
- Mysql数据库
- 逐级解构层级关系数据
- Android的NDK开发(4)————JNI数据结构之JNINativeMethod
- 一周HTML5以及CSS的学习
- SpringMVC 的拦截器配置示例
- 编程题目练习-翻牌