LeetCode94 BinaryTreeInorderTraversal Java题解(递归 迭代)

原创 2015年07月08日 09:57:06

题目:

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].

解题:

中序遍历一颗二叉树,如果是递归就很简单了,中序遍历左+访问根节点+中序遍历右 就可以了。迭代的话,我是通过一个栈,从根节点开始入栈,只要一直存在左节点就一直入栈,不存在左节点就出栈访问节点值,然后继续遍历出栈那个节点的右节点。

代码:

1,递归

	public static List<Integer> result=new ArrayList<>();
	  public static List<Integer> inorderTraversal(TreeNode root,List<Integer> result) {
		  if(root!=null)
		  {
			  inorderTraversal(root.left,result);
			  result.add(root.val);
			  inorderTraversal(root.right,result);
		  }
		  
		  return result;
		  
	        
	    }
	  
2,迭代(下面两个函数都是  只是不同的写法而已)

 public static List<Integer> inorderTraversal2(TreeNode root,List<Integer> result) {
		  List<Integer> res=new ArrayList<>();
		  Stack<TreeNode> nodeStack=new Stack<>();
		  
		 
		  while(root!=null||!nodeStack.isEmpty())
		  {
			  while(root!=null)
			  {
				  nodeStack.push(root);
				  root=root.left;
			  }
			  
			  TreeNode tempNode=nodeStack.pop();
			  res.add(tempNode.val);
			  root=tempNode.right;
			  
		  }
		  return res;
		  
		  
	        
	    }
	  
	  public static List<Integer> inorderTraversal3(TreeNode root,List<Integer> result) {
		  List<Integer> res=new ArrayList<>();
		  Stack<TreeNode> nodeStack=new Stack<>();
		  
		 
		 while(true)
		 {
			 while(root!=null)
			 {
				 nodeStack.add(root);
				 root=root.left;
			 }
			 
			 if(nodeStack.isEmpty()) break;
			 
			 TreeNode tempNode=nodeStack.pop();
			 res.add(tempNode.val);
			 root=tempNode.right;
		 }
		 
		 return res;
		  
		  
	        
	    }



LeetCode 94:Binary Tree Inorder Traversal

Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binar...

LeetCode 94:Binary Tree Inorder Traversal(中序遍历)

Given a binary tree, return the inorder traversal of its nodes’ values.For example: Given binary tr...

Leetcode_94_Binary Tree Inorder Traversal

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42876657 Given a binary tre...

NYOJ_94 cigarettes 递归VS迭代

一共有n支烟,每天抽k支。每抽完k支,会得到一只。 输入n k,输出一共抽了多少烟。...

LeetCode94 Binary Tree Inorder Traversal(迭代实现) Java

题目: Given a binary tree, return the inorder traversal of its nodes’ values. For example: Given bi...

LeetCode 94 Binary Tree Inorder Traversal(二叉树的中序遍历)+(二叉树、迭代)

翻译给定一个二叉树,返回其中序遍历的节点的值。例如: 给定二叉树为 {1, #, 2, 3} 1 \ 2 / 3 返回 [1, 3, 2]备注:用递归是微不足道的...
  • NoMasp
  • NoMasp
  • 2016年03月19日 15:32
  • 2874

Leetcode 94:Binary Tree Inorder Traversal (二叉树中序遍历,非递归)

94. Binary Tree Inorder Traversal 提交地址: https://leetcode.com/problems/binary-tree-inorder-traversal/...

leetcode 94. Binary Tree Inorder Traversal-中序遍历|递归|非递归

原题链接:94. Binary Tree Inorder Traversal 【思路-Java、Python】 非递归实现用到了栈,以[1,2,3,4,5,null,6]为例,下图模拟了这个过程 ...

LeetCode 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)

翻译反转一个单链表。原文Reverse a singly linked list.分析我在草纸上以1,2,3,41,2,3,4为例,将这个链表的转换过程先用描绘了出来(当然了,自己画的肯定不如博客上面...
  • NoMasp
  • NoMasp
  • 2016年01月14日 06:22
  • 3654

LeetCode- 树的前序、中序、后序遍历(递归与迭代)

LeetCode- 树的前序、中序、后序遍历(递归与迭代), 145. Binary Tree Postorder Traversal ,94. Binary Tree Inorder Travers...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode94 BinaryTreeInorderTraversal Java题解(递归 迭代)
举报原因:
原因补充:

(最多只允许输入30个字)