第一題 把二元查詢樹轉變成排序的雙向鍊錶

2021-06-22 04:55:30 字數 1592 閱讀 3934

題目部落格:

題目:1.把二元查詢樹轉變成排序的雙向鍊錶(樹)

題目:輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。

要求不能建立任何新的結點,只調整指標的指向。

10/ /

6  14

/ / / /

4  8 12 16

轉換成雙向鍊錶

4=6=8=10=12=14=16。

首先我們定義的二元查詢樹 節點的資料結構如下:

struct bstreenode

;。。。。

我先把建立了新結點的**貼出來吧。

**為:

__author__ = 'administrator'

class treenode:

def __init__(self,value,leftchild=none,rightchild=none):

d=locals()

d.pop("self")

codeobject=self.__init__.im_func.func_code

argumentnames=codeobject.co_varnames[1:codeobject.co_argcount]

for name in argumentnames:

setattr(self,name,d[name])

class linkednode:

def __init__(self,value,pre=none,next=none):

d=locals()

d.pop("self")

codeobj=self.__init__.im_func.func_code

argumentnames=codeobj.co_varnames[1:codeobj.co_argcount]

for n in argumentnames:

setattr(self,n,d[n])

def __cmp__(self, other):

return cmp(self.value,other.value)

class linkedlist:

def __init__(self,head=none):

self.head=none

def add(self,nodevalue):

newnode=linkednode(value=nodevalue)

if not self.head:

self.head=newnode

else:

self.addnode(newnode,self.head)

def addnode(self,newnode,curnode):

if curnodenewnode:

self.addnode(newnode,curnode.pre)

else:

curnode.pre.next,newnode.pre=newnode,curnode.pre

curnode.pre,newnode.next=newnode,curnode

if newnode哎。。迭代。。總是理不清楚啊。。。有時候不知道怎麼迭代啊!!!!

bbbbbbbbbbbbbb

把二元查詢樹轉變成排序的雙向鍊錶

1.首先是如何建立乙個二叉查詢樹 2.再對二叉查詢樹進轉換 如下 bstreenode1.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std struct bstreenode typedef bstreenode doubl...

把二元查詢樹轉變成排序的雙向鍊錶

把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該轉換成個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標向。include include typedef struct bittree bittree void addnode bittree root,int value p r...

把二元查詢樹轉變成排序的雙向鍊錶

這些演算法的思路很多我不會的話都參考了july演算法的思想,特此宣告一下,我只是給出我的具體實現 把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6...