编程实现给一个二叉树增加一个子树的程序,求各位求ps大神帮忙p图

2547人阅读
二叉树(8)
题目:求二叉树的高度
1、递归调用时将当前高度和已经取得的最大高度作为遍历时的context传入,遍历的过程中不断更新这两个context,最后输出遍历过程中获得的最大高度
2、二叉树的高度是其左子树或右子树中较高的一个子树的高度再加1,由此获得二叉树的高度
程序如下:
#include &stdio.h&
#include &stdlib.h&
template&typename T&
class BinaryTree {
class TreeNode {
TreeNode(const T& key) : value_(key), left_(NULL), right_(NULL) {}
TreeNode* left_;
TreeNode* right_;
enum TreeHightAlgorithm {
BinaryTree() : root_(NULL) {}
int TreeHight(TreeHightAlgorithm algorithm) {
if (algorithm == ALG1) {
return TreeHight(root_);
} else if (algorithm == ALG2) {
int current_hight = 0;
int max_hight = 0;
TreeHight(root_, current_hight, max_hight);
return max_
void Insert(const T& key) {
Insert(key, root_);
TreeNode* root_;
int TreeHight(TreeNode* current, int& current_hight, int& max_hight) {
if (current) {
current_hight++;
if (current_hight & max_hight) {
max_hight = current_
TreeHight(current-&left_, current_hight, max_hight);
current_hight--;
current_hight++;
TreeHight(current-&right_, current_hight, max_hight);
current_hight--;
int TreeHight(TreeNode* current) {
if (current) {
int left_hight = TreeHight(current-&left_);
int right_hight = TreeHight(current-&right_);
if (left_hight & right_hight) {
return left_hight + 1;
return right_hight + 1;
void Insert(const T& key, TreeNode*& current) {
if (current) {
if (key &= current-&value_) {
Insert(key, current-&right_);
Insert(key, current-&left_);
current = new TreeNode(key);
int main(int argc, char** argv) {
BinaryTree&int& my_
const int kKeySize = 100000;
for (int i = 0; i & kKeyS ++i) {
my_tree.Insert(rand());
printf(&the hight of tree: %d\n&, my_tree.TreeHight(BinaryTree&int&::ALG1));
printf(&the hight of tree: %d\n&, my_tree.TreeHight(BinaryTree&int&::ALG2));
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:166532次
积分:2537
积分:2537
排名:第8211名
原创:83篇
转载:28篇
评论:18条
(1)(1)(1)(3)(8)(54)(12)(18)(5)(7)(8)扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
扫一扫,把题目装进口袋数据结构一个关于二叉树的设计,希望各位大神们帮帮忙!_数据结构吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:25,906贴子:
数据结构一个关于二叉树的设计,希望各位大神们帮帮忙!收藏
要求用C语言!!!一、设计题目&&&
二叉树综合应用二、主要内容(1)用户正确输入一棵二叉树的中序和后序序列,如下:中序:G&& L&& D&& H&& B&& E&& I&& A&& C&& J&& F&& K后序:&& L&& G&& H&& D&& I&&& E&& B&& J&& K&& F&& C&& A根据以上序列来编程实现建立这棵二叉树 (2)用户正确输入一棵二叉树的先序和中序序列,如下:先序: A B C D E F G H I 中序: B C A E D G H F I根据以上序列来编程实现建立这棵二叉树(3)把上面第(2)小题建立的二叉树按中序遍历线索化,并以中序遍历此二叉树。
别沉了啊,各位帮帮忙吧!!!!
帮你做。做完付钱。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或给定一个有序数组(递加),写程序构建一棵具有最小高度的二叉树 - 编程当前位置:& &&&给定一个有序数组(递加),写程序构建一棵具有最小高给定一个有序数组(递加),写程序构建一棵具有最小高度的二叉树&&网友分享于:&&浏览:0次给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。
struct Node
void createTree(int a[], int begin, int end, Node* &root, Node *parent, bool leftChild)
if (begin & end)
int mid = begin + (end-begin)/2;
Node *p = new Node();
p-&value = a[mid];
if (root == NULL)
if (leftChild)
parent-&left =
parent-&right =
if (begin & mid-1)
p-&left = NULL;
createTree(a, begin, mid-1, root, p, true);
if (mid+1 & end)
p-&right = NULL;
createTree(a, mid+1, end, root, p, false);
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有

我要回帖

更多关于 求ps大神帮忙p图 的文章

 

随机推荐