zoukankan      html  css  js  c++  java
  • Convert Sorted Array to Binary Search Tree

    # Definition for a  binary tree node
    class TreeNode:
    	def __init__(self, x):
    		self.val = x
    		self.left = None
    		self.right = None
    	def disp(self):
    		print self.val
    		if(self.left!=None):
    			self.left.disp()
    		if(self.right!=None):
    			self.right.disp()
    # Definition for singly-linked list.
    class ListNode:
    	def __init__(self, x):
    		self.val = x
    		self.next = None
    
    class Solution:
        # @param head, a list node
        # @return a tree node
        def sortedListToBST(self, head):
        	l=[]
        	while(head!=None):
        		l.append(head.val)
        		head=head.next
        	#print l
        	return self.sortArray2BST(l)
        def sortArray2BST(self,arr):
        	if(len(arr)==0):
        		return None
        	if(len(arr)==1):
        		return TreeNode(arr[0])
        	else:
        		mid=len(arr)/2
        		treenode=TreeNode(arr[mid])
        		treenode.left=self.sortArray2BST(arr[0:mid])
        		treenode.right=self.sortArray2BST(arr[mid+1:len(arr)])
        		return treenode
    

    将linked-list转化为array,有别人提出的不转化的办法是通过两个指针,第一个指针每次走一位,第二个指针每次走两位,第二个指针走到最后的时候,第一个指针走到中间位。
    可用多个指针(速度不同)进行对链表的定位

  • 相关阅读:
    Linux 终端常用快捷键
    问题集
    数据库
    mysql数据库知识点
    IntelliJ IDEAj集成开发环境
    Windows最全DOS的CMD命令
    DB2移植到Oracle数据库完整的图解教程
    169.254是什么IP地址 169.254的解决方法(添加局域网地址时)
    解析xml时报错
    童年乐趣
  • 原文地址:https://www.cnblogs.com/iois/p/4316753.html
Copyright © 2011-2022 走看看