樹的橫向列印 縱向列印

2021-10-06 11:01:30 字數 1611 閱讀 9440

水平列印樹,選擇右中左遍歷的原因。右樹在根節點的上面,左樹在根節點的下面,按照從上到下的順序列印就是右中左的遍歷方式。

def

printtree

(root, depth=0)

: s =

''if

not root:

return s

sright = printtree2(root.right, depth+1)

print

('\033[5;30m|\033[0m '

*depth+

"\033[1;31m"

+root.val+

"\033[0m"

) sleft = printtree2(root.left, depth+1)

# s = sright + '| '*depth + root.val + '\n' + sleft

# return s

列印效果

層序遍歷可以滿足縱向一行一行列印的需求,按照中序遍歷列印順序,給每個節點新增index屬性,控制離最左端的距離。

def

printtree

(root):if

not root:

return

index =-1

# 中序遍歷樹,按列印順序給節點新增index屬性

stack =

head = root

while root or stack:

while root:

root = root.left

finish = stack.pop(

) index +=

1 finish.index = index

root = finish.right

maxindex = index

# 層序遍歷

queue = deque(

) symbol =

' + '

while queue:

n =len(queue)

s ="" lastindex =-1

for i in

range

(n):

finish = queue.popleft(

) s += symbol *

(finish.index-lastindex-1)

+" \033[1;31m"

+finish.val+

"\033[0m "

lastindex = finish.index

if finish.left:

if finish.right:

s += symbol *

(maxindex-lastindex)

print

(s)

列印效果

自定義橫向或縱向列印

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...

C 將縱向內容列印到橫向紙張上(列印旋轉)

遇到了乙個列印問題,設計了一張標籤,要列印的內容是縱向的,要列印在 寬 高 8cm 10cm 的標籤紙上,結果在設計完後發現客戶購買的是 寬 高 10cm 8cm 的標籤紙,於是就嘗試使用 e.pagesettings.landscape true 來進行橫向列印,結果發現沒用的,內容還是從上到下列...

vue 橫縱向列印

用單選框來切換列印時的方向 footer class dialog footer isportrait label 1 change handleradiochange 縱向 isportrait label 0 change handleradiochange 橫向 通過css可以設定列印的橫縱向...