码迷,mamicode.com
首页 > 其他好文 > 详细

leetCode -- Binary Tree的3个水题 —— 3种非Recursive遍历

时间:2014-11-19 15:28:41      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   io   ar   color   os   sp   

Binary Tree Preorder Traversal

Given a binary tree, return the preorder traversal of its nodes‘ values.

For example:
Given binary tree {1,#,2,3},

   1
         2
    /
   3

return [1,2,3].

Note: Recursive solution is trivial, could you do it iteratively?

bubuko.com,布布扣
‘‘‘
Created on Nov 18, 2014

@author: ScottGu<gu.kai.66@gmail.com, 150316990@qq.com>
‘‘‘
# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    # @param root, a tree node
    # @return a list of integers
    def preorderTraversal(self, root):
        stack=[]
        vals=[]
        if(root==None): return vals
        node=root
        stack.append(node)
        while(len(stack)!=0):
            node=stack.pop()
            if(node==None): continue
            vals.append(node.val)
            stack.append(node.right)
            stack.append(node.left)
        
        return vals
        
View Code

 

Binary Tree Inorder Traversal

Given a binary tree, return the inorder traversal of its nodes‘ values.

For example:
Given binary tree {1,#,2,3},

   1
         2
    /
   3

return [1,3,2].

Note: Recursive solution is trivial, could you do it iteratively?

confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.

bubuko.com,布布扣
‘‘‘
Created on Nov 18, 2014

@author: ScottGu<gu.kai.66@gmail.com, 150316990@qq.com>
‘‘‘
# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    # @param root, a tree node
    # @return a list of integers
    def inorderTraversal(self, root):
        stack=[]
        vals=[]
        visited={}
        if(root==None): return vals
        node=root
        stack.append(node)
        visited[node]=1
        while(len(stack)!=0):
            if(node.left!=None and visited.has_key(node.left)==False):
                node=node.left 
                stack.append(node)
                visited[node]=1
            else:
                node=stack.pop()
                if(node==None): continue
                vals.append(node.val)
                if(node.right!=None):
                    stack.append(node.right)
                    node=node.right
        return vals
  
View Code

 

Binary Tree Postorder Traversal

Given a binary tree, return the postorder traversal of its nodes‘ values.

For example:
Given binary tree {1,#,2,3},

   1
         2
    /
   3

return [3,2,1].

Note: Recursive solution is trivial, could you do it iteratively?

bubuko.com,布布扣
‘‘‘
Created on Nov 19, 2014

@author: ScottGu<gu.kai.66@gmail.com, 150316990@qq.com>
‘‘‘
# Definition for a  binary tree node
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    # @param root, a tree node
    # @return a list of integers
    def postorderTraversal(self, root):
        visited={}
        stack=[]
        vals=[]
        if(root==None): return vals
        node=root
        
        stack.append(node)
        visited[node]=1
        
        while(len(stack)!=0):
            node=stack[-1]
            if(node.left !=None and visited.has_key(node.left)==False):
                stack.append(node.left)
                visited[node.left]=1
                continue
            else:      
                if(node.right!=None and visited.has_key(node.right)==False):
                    stack.append(node.right)
                    visited[node.right]=1
                    continue
            node=stack.pop()
            if(node==None): continue
            vals.append(node.val)

        return vals
        
View Code

 

 

 

leetCode -- Binary Tree的3个水题 —— 3种非Recursive遍历

标签:des   style   blog   http   io   ar   color   os   sp   

原文地址:http://www.cnblogs.com/scottgu/p/4108227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!