接着上一次对非线性逻辑数据结构树的内容,开启对二叉树的深入复习和总结。首先还是先回顾一下几个重要的概念:
一、回顾
1. 满二叉树与完全二叉树
满二叉树指的是除了叶子节点外所有的节点都有两个子节点。这样可以很容易的计算出满二叉树的深度,要掌握满二叉树的一些性质。
完全二叉树则是从满二叉树继承而来,指的所有的节点按照从上到下,从左到右的层次顺序依次排列所构成的二叉树称之为完全二叉树。所以可以...
分类:
其他好文 时间:
2015-08-02 23:29:41
阅读次数:
205
求二叉树中的节点个数
求二叉树中叶子节点的个数
求二叉树的深度
求二叉树第K层的节点个数
递归遍历前序中序后序
非递归遍历前序中序后序层序
1 前序遍历
2 中序遍历
3 后序遍历
4 层序遍历
将二叉查找树变为有序的双向链表
判断两棵二叉树是否结构相同
判断二叉树是不是平衡二叉树
判断二叉树是否是搜索二叉树
求二叉树中两个节点的最低公共祖先节点
求二叉树中节点的最大距离
由前序遍历序列和中序遍历序列重建二叉树...
分类:
其他好文 时间:
2015-07-26 12:41:58
阅读次数:
186
我的代码:直接用了以前那个求二叉树某一个条路径的和为特定值的思想源代码struct TreeNode{ int val; struct TreeNode *left; struct TreeNode *right; }; #ifndef BINARY_TREE_DEEP_H#define BINAR...
分类:
其他好文 时间:
2015-07-17 20:55:55
阅读次数:
158
二叉树的宽度定义为具有最多结点数的层中包含的结点数,试计算一二叉树的深度。
#include "stdafx.h"
#include
#include
using namespace std;
struct BiNOde
{
int ele;
BiNOde* lnode;
BiNOde* rnode;
};
vectoraa;
int maxdepth = 0;
...
分类:
其他好文 时间:
2015-07-15 09:34:07
阅读次数:
109
int TreeDepth(BinaryTreeNode* pRoot)
{
if (pRoot == NULL)
return 0;
int nLeft = TreeDepth(pRoot->m_pLeft);
int nRight = TreeDepth(pRoot->m_pRight);
return (nLeft > nRight) ? (nLeft + 1) : (nRigh...
分类:
其他好文 时间:
2015-07-10 22:22:09
阅读次数:
156
题目大意:很简单,只需要找出一颗二叉树的最大深度即可,貌似没有时间和空间的要求。求解方法:更简单,只需要按照宽度优先的方法去查找即可,在这里我用a队列保存待扩展的节点,用b来保存a扩展出来的节点,再利用t中间变量来交换a和b,直到a列队为空时,结束。
注意边界条件,root=NULL时,应该返回0...
分类:
其他好文 时间:
2015-07-03 19:14:06
阅读次数:
110
题目题目标题:求二叉树的宽度和深度
给定一个二叉树,获取该二叉树的宽度和深度。 例如输入
a
/ b c
/ \ / d e f g返回3.
接口说明
原型: int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)
输入参数: head 需要获取...
分类:
其他好文 时间:
2015-07-03 15:48:28
阅读次数:
150
将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作:1、定义树的结构体:1 typedef struct TreeNode{2 int data;3 struct TreeNode *left;4 struct TreeNode *right; 5 }Tree...
分类:
编程语言 时间:
2015-06-02 23:24:27
阅读次数:
184
这是在阿里面试的一道题,刚难道感觉不是很难。于是按查找最大值和最小值的方法计算二叉树的深度。结果发现这俩个根本不是一回事。即使你不断遍历左子树,找到了最小
值,但是其最小值节点依然可能会有右子树,这样深度也就会不断增加。也就是说最大值对应的节点并不等同于右子树的深度,最小值对应的节点并不等同于左子树的深度。
面试结果也就可想而知了。
其实拿到这道题,首先想到的应该是采用递归算法。递归算法就得...
分类:
编程语言 时间:
2015-05-25 10:10:47
阅读次数:
151
完全二叉树(Complete Binary Tree):
设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。
解析:
任意的一个二叉树,都可以补成一个满二叉树。这样中间就会有很多空洞。在广度优先遍历的时候,如果是满二叉树,或者完全二叉树,这些空洞是在广度优先的遍历的末尾,所以,但我们遍历到空洞的...
分类:
其他好文 时间:
2015-05-25 09:56:19
阅读次数:
127