摘要:
题目:求一个二叉树的最大深度和最小深度 注: 采用分治法,最大深度即为左右子树的最大深度+1;最小深度即为左右子树的最小深度+1。最小深度的时候还要注意,如果节点只有左子树或右子树,需要返回另一半子树的深度+1,这是比求最大深度要增加的部分,否则就会将该节点的深度求为1。 阅读全文
摘要:
题目:按层输出二叉树,每层一行 注: 使用队列,这里是每层一行,需要再设置一个变量,用来存储每层的节点。当前队列的所有元素即为现层二叉树的所有节点。 阅读全文
摘要:
题目:求x的n次方 注: 如果n为0,直接返回1; 如果n小于0,则n取相反数求-n次幂之后,取倒数; 如果n大于0,采用分治的方法,如果n为奇数,转为n-1次方乘以x,如果n为偶数,计算x1/2,然后平方。 阅读全文
摘要:
题目:普通二叉树的最小公共节点 注: 如果p,q指向根节点,即该节点为最小公共节点。然后遍历左、右子树。如果遍历左子树为空,则返回右子树的结果,如果右子树为空,则返回左子树的结果,如果都不为空,则返回此时传入的根节点。 阅读全文
摘要:
题目:二叉排序树最近公共祖先 注: 采用递归来实现,利用二叉排序树的特点,如果根节点的值比p,q的值大,说明p,q都在根节点的左子树,递归遍历根节点的左子树;根节点的值比p,q值都小,同理,遍历右子树。当p,q的值在根节点两侧,说明此时根节点为p,q的最近公共节点。 阅读全文
摘要:
题目:验证一个二叉树是否为二叉排序树 注: 采用遍历二叉树的中序遍历,如果结果为排序,则说明该二叉树是二叉排序树 阅读全文