JZ18 (e)删除链表的节点
- 遍历删除即可,注意哨兵节点的使用
JZ55 (e)二叉树的深度
-
标准的递归
class Solution { public: int TreeDepth(TreeNode* pRoot) { int depth = 0; if(pRoot){ int leftd,rightd; leftd=1+TreeDepth(pRoot->left); rightd=1+TreeDepth(pRoot->right); depth=leftd>rightd?leftd:rightd; } return depth; } };
JZ77 (m)按之字形顺序打印二叉树
- 标准(区分层数的)bfs,使用queue
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
queue<TreeNode*> q;
if(pRoot) q.push(pRoot);
int level = 0;
vector<vector<int> > ret;
while(!q.empty()){
int sz=q.size();
TreeNode *p;
vector<int> ans;
while(sz--){
p=q.front();
q.pop();
ans.push_back(p->val);
if(p->left) q.push(p->left);
if(p->right) q.push(p->right);
}
if(level%2)
reverse(ans.begin(), ans.end());
++level;
ret.push_back(ans);
}
return ret;
}
};