网站盈利方法/谷歌seo建站
题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
解题思路:每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。
C#实现:public static void PrintFromTopToBottom(BinaryTreeNode pTreeRoot)
{
if (pTreeRoot == null)
return;
Queue quequeNode = new Queue();
quequeNode.Enqueue(pTreeRoot);
while (quequeNode.Count > 0)
{
BinaryTreeNode pNode = quequeNode.Dequeue();
Console.Write(pNode.value + "\t");
if (pNode.left != null)
quequeNode.Enqueue(pNode.left);
if (pNode.right != null)
quequeNode.Enqueue(pNode.right);
}
}
Java实现:public static void PrintFromTopToBottom(BinaryTreeNode pTreeRoot) {
if (pTreeRoot == null)
return;
LinkedList quequeNode = new LinkedList();
quequeNode.add(pTreeRoot);
while (quequeNode.size() > 0) {
BinaryTreeNode pNode = quequeNode.removeFirst();
System.out.print(pNode.value + "\t");
if (pNode.left != null)
quequeNode.add(pNode.left);
if (pNode.right != null)
quequeNode.addLast(pNode.right);
}
}
Python实现:@staticmethod
def printFromTopToBottom(pTreeRoot):
"""
从上往下打印二叉树
从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。
:param pTreeRoot:
:return:
"""
if pTreeRoot == None:
return
queueNode = []
queueNode.append(pTreeRoot)
while len(queueNode) > 0:
pNode = queueNode[0]
queueNode = queueNode[1:]
print(pNode.value, end=" ")
if pNode.left != None:
queueNode.append(pNode.left)
if pNode.right != None:
queueNode.append(pNode.right)