摘要:
1、根据前序与中序,推导二叉树。举例来说:前序ABC,中序CAB,由前序直到A为根节点,由中序知道A的左边为左孩子,右边为右孩子。C为左孩子,B为右孩子。2、思考,由前序和后续,能否退出二叉树? 前序ABC,后序CBA。由前序ABC知道A为根节点,后面分成两块,每一块都是前序,前面一块为左孩子,后面一块为右孩子。由后序知道A为根节点,前面分成两块,每一块都是后序,前面一块为左孩子,后面一块为右孩子。都是分成两块,对于分成的两块,前面一块元素集合相同,后面一块元素集合相同。注意,集合不考虑元素的顺序。这样,就有两种情况: a、前面一块为BC,后面一块为空 b、前面一块为空,后面一块为BC ... 阅读全文
posted @ 2013-11-29 19:07
Andy Niu
阅读(1791)
评论(0)
推荐(0)
摘要:
1、二叉树递归遍历很简单,以前序遍历为例说明:1 void PrefixOrder(Node* node) 2 {3 if(node!=NULL)4 {5 coutvaluelchild);7 PrefixOrder(root->rchild);8 }9 } 中序遍历和后序遍历类似。2、考虑二叉树非递归遍历,思路:前序遍历特点,访问当前节点,然后访问左孩子,左孩子有孩子,继续访问左孩子的左孩子节点,直到没有左孩子,访问右孩子。因此。非递归遍历的思路就是,使用while,记录当前节点,往左一条路走到底,然后原路后退,访问右节点。 阅读全文
posted @ 2013-11-29 18:41
Andy Niu
阅读(218)
评论(0)
推荐(0)
摘要:
1、什么是左闭合区间? [first,last),就是包含first,但是不包含last的区间范围。2、为什么使用左闭合区间? 使用左闭合区间有两个方便的性质: a、first == last,说明没有区间元素 b、first!=last,说明区间至少有一个元素,而且多次first++,最终可以到达last c、查找target,返回的位置==last,说明在范围内没有找到target 编程中使用左闭合区间,更重要的是,提供了一致性。我们知道对于数组,和基于连续内存的集合,假如元素个数为5,可访问的范围是[0,5),注意下标5并不是有效元素。 阅读全文
posted @ 2013-11-29 17:01
Andy Niu
阅读(1165)
评论(0)
推荐(0)
浙公网安备 33010602011771号