LeetCode103二叉樹的鋸齒形層次遍歷

2021-10-05 08:55:23 字數 956 閱讀 6040

給定乙個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。

例如:給定二叉樹 [3,9,20,null,null,15,7]

3/ \

9  20

/  \

15   7

返回鋸齒形層次遍歷如下:

[[3],

[20,9],

[15,7]]

先假設是正常的遍歷,同一層次的節點放在同乙個列表裡,需要乙個變數來儲存樹的層次,現在題目要求是鋸齒形遍歷,需要乙個變數來儲存當前的層次是從左到右還是從右到左。綜上,可以採用雙向鍊錶來儲存每層節點的數值,如果當前層是從左到右,則每次新增到鍊錶末尾,如果是從右到左,則每次新增到鍊錶頭部。

樹的層次遍歷,可以借助佇列資料結構,遍歷的過程中儲存當前節點所在層次以及遍歷方向。

**如下:

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

queuequeue=new linkedlist();

queue.offer(new pairs(root,true,0));

while (!queue.isempty())else

if(nodea!=null)

queue.offer(new pairs(nodea,!pairinq.isleft,pairinq.level+1));

if(nodeb!=null)

queue.offer(new pairs(nodeb,!pairinq.isleft,pairinq.level+1));

}result.add(list);

}return result;

}}class pairs

}

leetcode 103二叉樹的鋸形遍歷

方法 使用棧和佇列。1 首先判斷二叉樹是否為空 建立res,和queue有兩個引數,第乙個是節點,第二個是層數。將根節點放入,開始迴圈。2 len是這一層的節點數,level是層數,如果當前res的大小等於level建立。3 開始迴圈當前層數的節點,首先判斷層數是奇數還是偶數,偶數直接進入res,奇...

Leetcode 103 二叉樹的鋸齒形層次遍歷

給定乙個二叉樹,返回其節點值的鋸齒形層次遍歷。即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回鋸齒形層次遍歷如下 3 20,9 15,7 解題思路 解題的大致思路是廣度優先搜尋的思路,但有...

leetcode 103 二叉樹的鋸齒形層次遍歷

給定乙個二叉樹,返回其節點值的鋸齒形層次遍歷。即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7返回鋸齒形層次遍歷如下 3 20,9 15,7 題意要求實現每遍歷一層就反序一次,可以用兩個棧,遍歷...