打印二叉树右视图第二种思路(广度优先遍历):
对于方法一中每次要寻找中序遍历中的根节点很浪费时间,我们可以利用一个哈希表直接将中序遍历的元素与下标做一个映射,后续查找中序根结点便可以直接访问了。
同时除了深度优先搜索可以找最右结点,我们也可以利用层次遍历,借助队列,找到每一层的最右。值得注意的是:每进入一层,队列中的元素个数就是该层的结点数。因为在上一层他们的父节点将它们加入队列中的,父节点访问完之后,刚好就是这一层的所有结点。因此我们可以用一个size变量,每次进入一层的时候记录当前队列大小,等到size为0时,便到了最右边,记录下该结点元素。
展开
评论