59.题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
1
2 3
4 5 6 7
输出1 3 2 4 5 6 7
输入1 -- 2 3左右 --- 7 6 5 4 右左
输出1 -- 3 2 --- 4 5 6 7 栈结构
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> >data;
if(pRoot==NULL)
return data;
stack<TreeNode*>node[2];
int first=0,second=1;
node[first].push(pRoot);
vector<int> temp_data;
while(!node[0].empty() || !node[1].empty())
{
TreeNode* temp=node[first].top();
temp_data.push_back(temp->val);
node[first].pop();
if(first==0)
{
if(temp->left != NULL)
node[second].push(temp->left);
if(temp->right != NULL)
node[second].push(temp->right);
}
else
{
if(temp->right != NULL)
node[second].push(temp->right);
if(temp->left != NULL)
node[second].push(temp->left);
}
if(node[first].empty())
{
first=1-first;
second=1-second;
data.push_back(temp_data);
temp_data.clear();
}
}
return data;
}
};
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Print(self, pRoot):
if pRoot==None:
return []
data=[]
node=[pRoot]
flag=-1
while len(node):
temp_data=[]
length=len(node)
while length:
temp_tree=node.pop(0)
temp_data.append(temp_tree.val)
if temp_tree.left != None:
node.append(temp_tree.left)
if temp_tree.right != None:
node.append(temp_tree.right)
length-=1
flag=flag*-1
data.append(temp_data[::flag])
return data
# write code here
60.题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> >data;
if(pRoot==NULL)
return data;
queue<TreeNode*>node;
node.push(pRoot);
while(!node.empty())
{
int len=node.size();
vector<int>temp_data;
while (len--)
{
TreeNode* temp=node.front();
node.pop();
temp_data.push_back(temp->val);
if(temp->left)
node.push(temp->left);
if(temp->right)
node.push(temp->right);
}
data.push_back(temp_data);
}
return data;
}
};
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Print(self, pRoot):
if pRoot==None:
return []
data=[]
node=[pRoot]
while len(node):
temp_data=[]
length=len(node)
while length:
temp_tree=node.pop(0)
temp_data.append(temp_tree.val)
if temp_tree.left != None:
node.append(temp_tree.left)
if temp_tree.right != None:
node.append(temp_tree.right)
length-=1
data.append(temp_data)
return data
# write code here