LeetCode Online Judge 题目C# 练习 - Binary Tree Level Order Traversal II

Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3

   / \

  9  20

    /  \

   15   7

 return its bottom-up level order traversal as:

[

  [15,7]

  [9,20],

  [3],

]

 1         public static List<List<int>> BinaryTreeLevelOrderTraversalII(BTNode root)

 2         {

 3             List<List<int>> ret = new List<List<int>>();

 4             if (root == null)

 5                 return ret;

 6 

 7             Queue<BTNode> read = new Queue<BTNode>();

 8             Queue<BTNode> write = new Queue<BTNode>();

 9             Stack<List<int>> stack = new Stack<List<int>>();

10             read.Enqueue(root);

11 

12             while (read.Count > 0)

13             {

14                 List<int> level = new List<int>();

15                 while (read.Count > 0)

16                 {

17                     BTNode temp = read.Dequeue();

18                     level.Add(temp.Value);

19 

20                     if (temp.Left != null)

21                     {

22                         write.Enqueue(temp.Left);

23                     }

24                     if (temp.Right != null)

25                     {

26                         write.Enqueue(temp.Right);

27                     }

28                 }

29 

30                 stack.Push(level);

31 

32                 //swap read and write

33                 Queue<BTNode> tempQ = read;

34                 read = write;

35                 write = tempQ;

36             }

37 

38             while(stack.Count > 0)

39             {

40                 ret.Add(stack.Pop());

41             }

42 

43             return ret;

44         }

代码分析:

  不就前一题,加个 Stack 吗?我不懂了。。。。

你可能感兴趣的:(LeetCode)