leetcode -day24 Maximum Depth of Binary Tree & Binary Tree Zigzag Level Order Traversal

1、Maximum Depth of Binary Tree

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

class Solution {
public:
    int maxDepth(TreeNode *root) {
          inMax = 0;
          int depth = 0;
          if(root){
              maxDepth(root,depth);
          }
          return inMax;
    }
    void maxDepth(TreeNode* root, int depth){
        ++depth;
        if(!root->left && !root->right){
            if(depth >inMax){
                inMax = depth;
            }
        }
        if(root->left){
            maxDepth(root->left,depth);
        }
        if(root->right){
            maxDepth(root->right,depth);
        }
    }
    int inMax;
};

2、Binary Tree Zigzag Level Order Traversal

Given a binary tree, return the zigzag level order traversal of its nodes‘ values. (ie, from left to right, then right to left for the next level and alternate between).

For example:

Given binary tree {3,9,20,#,#,15,7},

    3
   /   9  20
    /     15   7

return its zigzag level order traversal as:

[
  [3],
  [20,9],
  [15,7]
]

分析:有栈来保存结点,第一次先放左孩子后放右孩子,第二次先放右孩子再放左孩子。

class Solution {
public:
    vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
        vector<vector<int> > result;
        stack<TreeNode*> stackNode;
        stack<TreeNode*> newStackNode;
        vector<int> nodeVec;
        if(root){
            stackNode.push(root);
            while(!stackNode.empty()){
                nodeVec.clear();
                 while(!stackNode.empty()){
                    TreeNode* node = stackNode.top();
                    stackNode.pop();
                    nodeVec.push_back(node->val);
                    if(node->left){
                        newStackNode.push(node->left);
                    }
                    if(node->right){
                        newStackNode.push(node->right);
                    }
                }
                result.push_back(nodeVec);
                nodeVec.clear();
                while(!newStackNode.empty()){
                    TreeNode* node = newStackNode.top();
                    newStackNode.pop();
                    nodeVec.push_back(node->val);
                    if(node->right){
                        stackNode.push(node->right);
                    }
                    if(node->left){
                        stackNode.push(node->left);
                    }
                }
                if(!nodeVec.empty()){
                    result.push_back(nodeVec);
                }
            }
        }
        return result;
    }
};



leetcode -day24 Maximum Depth of Binary Tree & Binary Tree Zigzag Level Order Traversal,布布扣,bubuko.com

时间: 2024-10-12 12:23:42

leetcode -day24 Maximum Depth of Binary Tree & Binary Tree Zigzag Level Order Traversal的相关文章

leetcode 刷题之路 63 Binary Tree Zigzag Level Order Traversal

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its zig

[leetcode]Binary Tree Zigzag Level Order Traversal

Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example:Given binary tree {3,9,20,#

[LeetCode] Binary Tree Zigzag Level Order Traversal(bfs)

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its zig

[leetcode]Binary Tree Zigzag Level Order Traversal @ Python

原题地址:http://oj.leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ 题意: Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between

Binary Tree Zigzag Level Order Traversal -- LeetCode

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example:Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its zigz

[LeetCode] Binary Tree Zigzag Level Order Traversal 二叉树的之字形层序遍历

Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example:Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its zigz

Leetcode 树 Binary Tree Zigzag Level Order Traversal

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie Binary Tree Zigzag Level Order Traversal Total Accepted: 8678 Total Submissions: 33047My Submissions Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from le

【一天一道LeetCode】#103. Binary Tree Zigzag Level Order Traversal

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 来源: https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/ Given a binary tree, return the zigzag level order traversal of its nodes' values

Binary Tree ZigZag Level Order Traversal leetcode java

题目: Given a binary tree, return the zigzag level order traversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / 9 20 / 15 7 return its