首页 > 其他分享 >BM-27-之字形打印二叉树

BM-27-之字形打印二叉树

时间:2022-11-02 10:22:28浏览次数:51  
标签:node 之字形 BM back stk1 stk2 二叉树 res push

用两个栈来模拟队列,利用了一个栈倒叙一个栈正序的特点,注意压栈顺序也有改变
就是感觉写出来代码有些重复

vector<vector<int> > Print(TreeNode* pRoot) {
	vector<vector<int>> res;
	if (!pRoot) return res;
	// 之字形打印在两个栈之间倒腾
	stack<TreeNode*> stk1, stk2;
	stk1.push(pRoot);

	while (!stk1.empty()||!stk2.empty()){
		if(!stk1.empty())res.push_back(vector<int>());
		while (!stk1.empty()) {
			TreeNode* node = stk1.top();
			res.back().push_back(node->val);
			stk1.pop();
			if (node->left) stk2.push(node->left);
			if (node->right) stk2.push(node->right);
		}
		if (!stk2.empty())res.push_back(vector<int>());
		while (!stk2.empty()) {
			TreeNode* node = stk2.top();
			res.back().push_back(node->val);
			stk2.pop();
			if (node->right) stk1.push(node->right);
			if (node->left) stk1.push(node->left);
		}
	}
	return res;
}

标签:node,之字形,BM,back,stk1,stk2,二叉树,res,push
From: https://www.cnblogs.com/yaocy/p/16850183.html

相关文章