最近在做微软等复试100题,里面有很多树的算法都是使用递归的,个人觉得做了以后加深了对树的理解。
树本身就是递归定义的,这就导致了很多树的算法自然而然用到递归,并且用非递归的话实现起来很不方便,
比如二叉树的遍历,如果用非递归就得借用栈等数据结构,其本质就是使用栈进行“递归”。
具体代码参见http://www.cnblogs.com/2010Freeze/archive/2010/06/01/1749128.html
下面我们就开始看题目:
1.把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。
4.在二元树中找出和为某一值的所有路径。
9.判断整数序列是不是二元查找树的后序遍历结果。
11.求二叉树中节点的最大距离,姑且定义"距离"为两节点之间边的个数。
15.输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。
16.输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
39.求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数。
75.二叉树两个结点的最低共同父结。
86.怎样编写一个程序,把一个有序整数数组放到二叉树中。
建议自己好好做做,会有帮助的
答案在http://www.cnblogs.com/v-July-v/archive/2010/12/06/2214143.html