摘要:
原题链接原文中的思路其实就是我面试时的初步思路,不过当时我没整理出来,所以可以看出这个思路还是有写复杂的。其实有一个更简单的思路:中序遍历对节点的遍历顺序就是我们要的顺序,我们只要有一个全局变量pre,记录上一个刚刚访问的节点,就可以让问题简化很多。xuxu8511的做法就是这个思路,但是他这个做法(C++实现),需要专门新建一个节点保存头结点,若多用一个头指针,则可以免去这步操作。如下所示: 1 struct node *head = NULL, *pre = NULL; 2 void tree_to_list(struct node *root) { 3 if(root == NULL.. 阅读全文
posted @ 2012-08-31 10:58
frank-fl
阅读(103)
评论(0)
推荐(0)
摘要:
原题链接这道题的优化思路是:求数的深度和判断数的平衡可以同时来做,但由于返回值用来判断数是否平衡,因此无奈加入了一个指针参数,来传递子树的深度。我认为其实深度也可以包含在返回值中,我们定义返回值的意义如下:-1表示该树不平衡。非负数表示该树平衡,平且该值同时表示树的深度。通过这种做法,可以简化接口。让代码更简洁一些,C代码如下:1 int is_balanced(struct node *root) {2 if(root == NULL) { return 0; }3 int ld = is_balanced(root->l);4 int rd = is_balanced(root... 阅读全文
posted @ 2012-08-31 10:47
frank-fl
阅读(109)
评论(0)
推荐(0)