摘要: 求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度。一种是:经过根节点,此时只需要求出左右子树的最大深度就可以另一种:不经过根节点,此时需要递归求解左右子树,然后比较左右子树中最大距离,求大者 1 #include "stdio.h" 2 #include"stdlib.h" 3 struct NODE 4 { 5 NODE* pLeft; // 左子树 6 NODE* pRight; ... 阅读全文
posted @ 2013-04-21 17:49 曾先森在努力 阅读(723) 评论(1) 推荐(0) 编辑
摘要: 二叉查找树按照二叉树进行组织。二叉查找树关键字的存储方式总是满足二叉查找树性质:设x为二查查找树种一个节点。如果y是x的左子树中的一个节点,那么key[x] >= key[y]。如果y是x的右子树的一个节点,那么key[x] data)16 {17 if (k data)18 {19 p = p->lchild;20 }21 else22 p = p->rchild;23 }24 return p;25 }26 27 Tree Tree_Minmum(T... 阅读全文
posted @ 2013-04-21 17:37 曾先森在努力 阅读(522) 评论(0) 推荐(0) 编辑
摘要: 问题给定一棵二叉树,判定该二叉树是否是二叉搜索树(Binary Search Tree)?解法1:暴力搜索首先说明一下二叉树和二叉搜索树的区别。二叉树指这样的树结构,它的每个结点的孩子数目最多为2个;二叉搜索树是一种二叉树,但是它有附加的一些约束条件,这些约束条件必须对每个结点都成立:结点node的左子树所有结点的值都小于node的值。结点node的右子树所有结点的值都大于node的值。结点node的左右子树同样都必须是二叉搜索树。该问题在面试中也许经常问到,考察的是对二叉搜索树定义的理解。初看这个问题,也许会想这样来实现:假定当前结点值为k。对于二叉树中每个结点,判断其左孩子的值是否小于k, 阅读全文
posted @ 2013-04-21 10:20 曾先森在努力 阅读(521) 评论(0) 推荐(0) 编辑