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 binary tr...

LeetCode94——Binary Tree Inorder Traversal

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

【LeetCode】94. Binary Tree Inorder Traversal 解题报告

转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51471280Subject 出处:https://leetcode.com/pro...

Leetcode_94_Binary Tree Inorder Traversal

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

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 (Java)

Binary Tree Inorder Traversal  即二叉树的中序遍历。 常见的有两种方法:递归和循环,其中递归调用的栈空间为树的高度,一般为o(logn...

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
  • 2694

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

LeetCode- 树的前序、中序、后序遍历(递归与迭代), 145. Binary Tree Postorder Traversal ,94. Binary Tree Inorder Travers...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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