摘要:
1 <?php 2 #查找二叉树距离最长的两个节点的距离,即相距边数最多的两个节点的边数 3 #解题思路:距离最长的两个节点有以下3中情况 4 #1.两个节点一个位于左子树,一个位于右子树,则最长距离是左右子树的深度相加 5 #2.两个节点都位于左子树,则最长距离是以左子树为根节点的左子树的两个左右子树的深度相加 6 #3.两个节点都位于右子树,则最长距离是以右子树为根节点的右子树的两个左右子树的深度相加 7 8 class Node { 9 public $data = null;10 public $lef... 阅读全文
摘要:
1 <?php 2 #树节点 3 class Node { 4 public $data = null; 5 public $parent = null; 6 public $left = null; 7 public $right = null; 8 } 9 10 #根据先序和中序遍历数组建立二叉树,注意是二叉树,不是二叉排序树,而且条件是树没有相同的值11 12 #思想是使用先序数组确定根节点,然后通过中序数组找到根节点的左右子树节点13 14 #@param pre 前序遍历... 阅读全文
摘要:
1 <?php 2 #通过数组判断该数组顺序输出是否是二叉树后序遍历结果 3 4 #@param a 待判断数组 5 #@param s 待判断开始部分 6 #@param e 待判断结束部分 7 function is_bst_post($a, $s, $e) { 8 if ($s == $e) { 9 return true;10 }11 12 #由于是后序遍历,所以根节点必然是最后一个元素13 $root = $a[$e];14 #找... 阅读全文
摘要:
1 <?php 2 #a[n+1]共有n+1个数,数值范围是1~n,a中有1个数重复,其他各不相同,找出这个相同的数 3 4 #第一种方法,利用 a数组的和减去1+2+3+...+n的和,得到的结果就是重复数字 5 function get_dup($a) { 6 $size = count($a); 7 $suma = 0; 8 $sumn = 0; 9 for ($i = 0; $i < $size; $i++) {10 $suma += $a[$i];11 ... 阅读全文