博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2015阿里秋招当中一个算法题(经典)
阅读量:5856 次
发布时间:2019-06-19

本文共 1869 字,大约阅读时间需要 6 分钟。

写一个函数,输入一个二叉树,树中每一个节点存放了一个整数值,函数返回这棵二叉树中相差最大的两个节点间的差值绝对值。请注意程序效率

这是2015阿里秋招的一个在线笔试题

实现方法非常easy。遍历一遍二叉树,找出最大最小,一相减就能够求出最大的差值

之前在做题的时候竟然写递归的方法求值。后面測试了一下。果然结果不正确

仅仅要是非递归的的方法遍历都能够非常easy找出最大值最小值。效率也比較高,时间复杂度为O(n)。

以下是我用非递归从上往下遍历二叉树的方法

用队列容器就可以方便实现。

我写的代码:

#include 
#include
#include
using namespace std; typedef struct BinaryTreeNode { int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight; }BinaryTreeNode ; int MaxT(BinaryTreeNode *pRoot){ int max=pRoot->m_nValue,min=pRoot->m_nValue; if(!pRoot) { return 0; } queue
qTree; qTree.push(pRoot); while(!qTree.empty()) { BinaryTreeNode *pNode=qTree.front(); if(max
m_nValue) { max=pNode->m_nValue; } else if(min>pNode->m_nValue) { min=pNode->m_nValue; } qTree.pop(); if(pNode->m_pLeft) qTree.push(pNode->m_pLeft); if(pNode->m_pRight) qTree.push(pNode->m_pRight); } return max-min;} //以先序的方式构建二叉树,输入-1表示结点为空 void CreateBinaryTree(BinaryTreeNode *&pRoot) { int nNodeValue = 0; cin >> nNodeValue; if (-1== nNodeValue) { pRoot = NULL; return; } else { pRoot = new BinaryTreeNode(); pRoot->m_nValue = nNodeValue; CreateBinaryTree(pRoot->m_pLeft); CreateBinaryTree(pRoot->m_pRight); } } void PrintInOrder(BinaryTreeNode *&pRoot) { if (pRoot != NULL) { PrintInOrder(pRoot->m_pLeft); cout << pRoot->m_nValue << " "; PrintInOrder(pRoot->m_pRight); } } int _tmain(int argc, _TCHAR* argv[]) { BinaryTreeNode *pRoot = NULL; CreateBinaryTree(pRoot); cout <<"中序遍历为:"<
path; //FindPath(pRoot, 22, path); system("pause"); return 0; }

转载地址:http://aoojx.baihongyu.com/

你可能感兴趣的文章
phinx武林秘籍(上)
查看>>
计算网络带宽需求的正确姿势
查看>>
如何建立云环境下的性能测试策略
查看>>
论网站内容建设策略
查看>>
10月18日云栖精选夜读:解读OpenMessaging开源项目,阿里巴巴发起首个分布式消息领域的国际标准...
查看>>
如何把SVG小图片转换为 html字体图表
查看>>
MongDB的安装和基本操作 二(增删改查)
查看>>
RvmTranslator 3.1 is released
查看>>
WCF的三个名称/命名空间,你是否傻傻分不清楚?
查看>>
解析深度学习的未来十大趋势
查看>>
中桥国际:如何应对客户端计算趋势
查看>>
云栖长卷:一张图看懂云栖七年
查看>>
飞利浦的选择:传统IT系统迁移到云平台
查看>>
Ubuntu支持LinuxONE大型机:为云而生的强强新组合
查看>>
英特尔至强E7 v4上市,剑指Power
查看>>
IT部门不应该推迟的10个项目
查看>>
使用SQL Server 助力解决全行业数字化能力
查看>>
理解Android虚拟机体系结构
查看>>
越想越恐怖:从美国互联网瘫痪说起
查看>>
5个常见的展示不同类型数据的错误形式以及如何避免
查看>>