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

本文介绍了一种从叶节点到根节点的层次遍历二叉树的方法,并提供了一个具体的C#实现示例。该算法使用队列和栈来保存每一层的节点,最后返回一个逆序的列表。

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 吗?我不懂了。。。。

转载于:https://www.cnblogs.com/etcow/archive/2012/10/25/2738032.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值