使用一个栈为另一个栈排序
判断树是否是平衡树,仅当两个子树都是平衡的,高度差绝对不超过1
stack <int> sort(stack<int > &input){
stack<int> output;
while(!input.empty()){
int value = input.pop();
input.pop():
while(!output.empty()&&output.top()<value){
input.push(output.top());
output.pop();
}
output.push(value);
}
return output;
}
给定一个二叉树,使用栈实现中序遍历
void inOrderTraversal(TreeNode *root){
if(root==NULL){
return;
}
stack<TreeNode *> st;
while(!st.empty() || root){
if(root){
st.push(root);
root = root->left;
}else{
root = st.top();
st.pop();
visit(root);
root = root->right;
}
}
}
判断树是否是平衡树,仅当两个子树都是平衡的,高度差绝对不超过1
int level(TreeNode *root){
if(root == NULL){
return 0;
}
return max(level(root->left),level(root->right))+1;
bool isBalanced(TreeNode *root){
if(root == NULL)
return true;
int factor = abs(level(root->left)-level(root->right));
return factor < 2 && isBalanced(root->right) && isBalanced(root->left);
}